0

我们是否应该将模型属性直接绑定到视图一直存在争议。但是大多数在线示例绑定模型属性可以直接查看,例如 { 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的属性。现在在这种情况下,如果我在中绑定一个按钮,那么它会在业务模型类中查找命令。我怎样才能在本身中定义命令而不必在 ? 中编写代理/包装器属性?ItemsSourceItemsListviewmodelCommandViewLogdatagridviewmodelviewmodel

4

1 回答 1

0

我同意为子集合创建 ViewModel 是一种痛苦和抽象诱导仪式的练习,但我认为您不需要这些视图模型来处理命令。您可以为 提供不同的 DataContext ,Button以便它绑定到您希望的任何视图模型(或模型):

....
<ItemsControl ItemsSource="{Binding ItemsList}">
  <ItemsControl.ItemTemplate>
    <DataTemplate DataType="{x:Type DataGridItemViewModel}">
      <Button Command="{Binding MyCommand}" DataContext="{Binding DataGridItemViewModel}"/>
      </DataTemplate>
   </ItemsControl.ItemTemplate>
...
于 2013-04-17T12:40:00.937 回答