0

モデル プロパティをビューに直接バインドする必要があるかどうかについては、議論がありました。しかし、ほとんどの xamples のオンライン バインド モデル プロパティは、直接表示できます。例: { Binding Model.Property}

データグリッドがあり、各行にポップアップを表示するボタンがある単純な WPF アプリケーションを作成していました。

ビジネスモデルは次のようになります。

public class DataGridItem
{
    public string Summary { get; set; }
    public string Name { get; set; }
}

ビューモデルクラスは次のようになります

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; }

}

のプロパティはDataGridItemsSourceプロパティにバインドされていItemsListますviewmodel。この場合、 でCommandtoViewLogボタンをバインドするdatagridと、ビジネス モデル クラスでコマンドが検索されます。viewmodelにプロキシ/ラッパーのプロパティを書き込むことなく、コマンド自体を定義するにはどうすればよいviewmodelですか?

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 に答える