2016-12-19 8 views
0

たとえば、1,2,3,4,5などのアイテムを持つWPFで1つのリストボックスがあるとします。最初にリストボックスを表示するとその項目は最初のリストボックスの選択に従いますか?あなたがリストボックスで「項目2」を選択するのであれば、あなたは、図2(b)は、図2CはListbox2に、あなたはあなたが3A、3B、3CなどListbox3でWPF、リストボックスのアイテムを他のリストボックスのソースとして

Can't embed the picture yet but here's the example of what i need

+0

ItemsSource = "{Binding SelectedItem.ChildCollection、ElementName = yourFirstList}" – Kilazur

答えて

1
を取得したい選択し、「項目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}" /> 
関連する問題