比如需要显示一个键盘,里面有各个按键。实现的效果如下:
之前的思路,就是建立一个singleKey的控件,然后在后台用代码动态的添加到父控件里去, 再用代码在后台进行绑定。
这种实现方法并不是真正的MVVM的模式。体会不到MVVM带来的便捷和惊喜。
用MVVM模式来实现时的思路如下:
1. 建立singleKey的ViewModel,定义需要绑定View的属性。
2. 在Key的ViewModel中,使用可观察集合,并绑定到View的ItemsSource上。
ViewModel
public ObservableCollection<DutSingleKeyViewModel> Keysets { get { return this.keysets; } set { this.keysets = value; } }
3. 对于singleKey的显示,可以在DataTemplat里面定义。
View
<UserControl.DataContext> <vm:DutKeysetViewModel /> </UserControl.DataContext> <UserControl.Resources> <DataTemplate DataType="{x:Type vm:DutSingleKeyViewModel}"> <Canvas> <Grid