我们是否应该将模型属性直接绑定到视图一直存在争议。但是大多数xamples在线绑定模型属性以直接查看,例如{Binding Model.Property
}
我正在停止一个简单的WPF应用程序,我有一个数据网格,每行都有一个显示弹出窗口的按钮。
商业模式如下:
public class DataGridItem
{
public string Summary { get; set; }
public string Name { get; set; }
}
viewmodel类看起来像
public class DataGridItemViewModel : NotifyableEntity
{
public DataGridItemViewModel()
{
Data = new ObservableCollection<DataGridItem>();
}
public string Summary { get; set; }
public string Name { get; set; }
public ObservableCollection<DataGridItem> ItemsList { get; set; }
}
DataGrid
的{{1}}属性绑定到ItemsSource
的{{1}}属性。现在,在这种情况下,如果我在ItemsList
中绑定viewmodel
到Command
按钮,那么它会在业务模型类中查找命令。
如何在ViewLog
本身中定义命令,而无需在datagrid
中编写代理/包装器属性?
答案 0 :(得分:0)
我同意为子集合创建ViewModel是抽象引发仪式的痛苦和练习,但我认为您不需要这些视图模型来处理命令。您可以为Button
提供不同的DataContext,以便它绑定到您希望的任何视图模型(或模型):
....
<ItemsControl ItemsSource="{Binding ItemsList}">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type DataGridItemViewModel}">
<Button Command="{Binding MyCommand}" DataContext="{Binding DataGridItemViewModel}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
...