を取得したい選択し、「項目3」などの場合は図2(a)を取得したいです
ここでは、推奨されるMVVMデザインパターンに従って、このようなカスケードコンボボックスを実装する方法の例を示します。https://blog.magnusmontin.net/2013/06/17/cascading-comboboxes-in-wpf-using-mvvm/
ビューモデルのソースプロパティに最初のListBoxのSelectedItemプロパティをバインドできます。この1のセッターでは、その後、例えば、あなたが2番目のListBoxのItemsSourceプロパティをバインドする別のコレクションのプロパティを設定します。
<ListBox ItemsSource="{Binding Numbers}" SelectedItem="{Binding SelectedNumber}" />
<ListBox ItemsSource="{Binding SubNumbers}" />
private object _selectedNumber;
public object SelectedNumber
{
get { return _selectedNumber; }
set
{
_selectedNumber = value;
NotifyPropertyChanged();
//set items
SubNumbers = new List<string> { "3A", "3B", "..." };
NotifyPropertyChanged("SubNumbers");
}
}
あなたのビューモデルクラスはINotifyPropertyChangedのインターフェイスを実装していることを確認してくださいhttps://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx
また、モデルクラスが、最初のListBoxの各アイテムが関連するアイテムを返すコレクションプロパティを持つように定義されている場合は、se ListBoxを最初のSelectedItemのプロパティに直接コンディションします。
<ListBox x:Name="lb1" ItemsSource="{Binding Numbers}"/>
<ListBox x:Name="lb2" ItemsSource="{Binding SelectedItem.SubProperty, ElementName=lb1}" />
出典
2016-12-19 15:02:01
mm8
ItemsSource = "{Binding SelectedItem.ChildCollection、ElementName = yourFirstList}" – Kilazur