最初のDataGridのSelectedItemプロパティをビューモデルのソースプロパティにバインドします。
<DataGrid x:Name="dataGrid1" SelectedItem="{Binding MySelectedItem}" />
private YourType _selectedItem;
public YourType MySelectedItem
{
get { return _selectedItem;; }
set { _selectedItem; = value; NotifyPropertyChanged(); }
}
...と、最初の1で選択されたアイテムのサブプロパティへの第二のDataGridのItemsSourceプロパティ:
<DataGrid x:Name="dataGrid2" ItemsSource="{Binding MySelectedItem.TheCollectionProperty}" />
は、あなたのビューモデルクラスはINotifyPropertyChangedの実装していることを確認し、 "MySelectedItem"ソースプロパティが設定されているときにPropertyChangedイベントが発生します。https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx
MVVMデザインパターンを使用してこれを行う方法です。
また、このような最初の1のSelectedItemプロパティに直接第二のDataGridのItemsSourceプロパティをバインドできます。このサンプルコードの最初にあなたのアイテムの種類を動作させること
<DataGrid x:Name="dataGrid2" ItemsSource="{Binding SelectedItem.TheCollectionProperty, ElementName=dataGrid1}" />
注意を上記のサンプルコードで "YourType"というDataGridには、2番目のDataGridに表示するアイテムのIEnumerableを返す "TheCollectionProperty"というパブリックプロパティが必要です。
出典
2016-12-12 17:09:02
mm8
データコンテキストに2つのリストがありますか、またはdatagrid1がそのサブオブジェクトの独自のリストを持つようにバインドされているオブジェクトはありますか? – Bryan
@Bryanこれは、 "... datagrid1がサブオブジェクトの独自のリストを持つようにバインドされているオブジェクトですか?" – Number8