複数のコンボ ボックス (具体的には 3) があり、すべてのコンボ ボックスの値は、前のコンボ ボックスで選択した値に依存します。これを WPF に実装する方法について何か提案はありますか?
すべてのコンボ ボックスには、アイテム ソースとして list<> があります。
comboBox1
コンボボックスの名前がであるcomboBox2
と仮定しましょうcomboBox3
。以下に、1 つのイベントのみの例を示します。これに基づいて、すべてのコンボボックスに対してイベントを発生させることができます。
comboBox1.SelectionChanged += new SelectionChangedEventHandler(comboBox1_SelectionChanged);
これがイベントコールです
void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
comboBox2.SelectedIndex = comboBox1.SelectedIndex;
//do other work here
}
私のアプリケーションには似たようなものがあります。List<> の代わりに ObservableCollection<> を使用する必要があります。
2 つの ComboBox があり、最初の ComboBox で結果を「グループ化」することを選択でき、2 番目の ComboBox では、必要に応じてより詳細に調べることができます。
1 つ目は「セキュリティ、国、セクター」で、2 つ目は最初の選択に応じて証券、国、またはセクターのリストを持つことができます。
これを行うために、コンボボックスを ObservableCollection にバインドしました。ユーザーが ComboBox1 で何かを選択すると、SelectionChanged イベントからそれを認識し、ComboBox2 の ObservableCollection に国、セクター、または証券を入力します。
ObservableCollection<> は、comboBox2 に新しい項目があることを「自動的に」通知し、更新します。
ああ、これが機能するには、MVVM パターンを使用する必要があります...しかし、既に使用していると思います。
次のようになります。
<ComboBox x:Name="cbModels"
ItemsSource="{Binding ElementName=comboBox1,Path=SelectedItem.Orders}"
DisplayMemberPath="OrderId"/>
でSelectedItem.Orders
選択した顧客の注文が表示されcomboBox1
ます。