简单记录几个wpf学习上的问题[Prism]
vs2019安装一个 Prism Template Pack 的扩展,就可以直接新建Prism项目了。
以下依旧是简单记录一点实际开发过程中的遇到的一些小问题(Tips)
Region
前面一篇文章里简单记录几个wpf学习上的问题(纯新)布局说了布局
所以,我在新的Prism项目的MainWindow上面画了一个简单的网格,用来布局我的界面
Region定义很简单,我定义了两个region并且指定了在网格中的初始位置和占用大小,分别用来用来加载分类view和插件view
<ContentControl prism:RegionManager.RegionName="CategorysRegion" Grid.Row="1" Grid.Column="0" />
<ContentControl prism:RegionManager.RegionName="AddonsRegion" Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="2" />
哎,儿子被留校了,心情不好,先不写了
---分---割---线---
UserControl
UserControl 是个View,将被加载到Region中去的,所以新建的时候直接新建UserControl就可以了,上一篇关于布局的内容,在UserControl中同样适用
ViewModel
Prism 会默认加载按约定命名的ViewModel,需要在view里定义
xmlns:prism="http://prismlibrary.com/" prism:ViewModelLocator.AutoWireViewModel="True"
这在从PRISM开始学WPF(三)Prism-Region-更新至Prism7.1有写,并且探索了他加载的逻辑
MVVM应用 View与ViewModel通信中的一些注意点
要为View绑定Model,首先在ViewModel里定义,像这样:
private string _tipsString;
public string TipsString
{
get { return _tipsString; }
set { SetProperty(ref _tipsString, value); }
}
其中 SetProperty
关键字是必须的,当然ViewModel要想被按约定绑定,需要继承Prism.Mvvm.BindableBase
然后在View(xaml)中这样绑定 <Label Content="{Binding TipsString}"/>
Tips :
值得一提的是 ,如果你想绑定一个动态的数据集合,List<T>
是不行的,需要用ObservableCollection<T>
,在开发的时候可以用List来实现,然后用 new ObservableCollection<AddonDisplay>(listObj);
进行转换。
MVVM应用 Command
貌似没什么好说的。。。