我有多个组合框(具体来说:3),每个组合框的值都取决于前一个组合框的选定值。有关如何在 WPF 中实现此功能的任何建议?
每个组合框都将 list<> 作为其项目源。
让我们假设您的组合框的名称是comboBox1
,comboBox2
下面comboBox3
我仅给出一个事件的示例。在此基础上,您可以为所有组合框触发事件。
comboBox1.SelectionChanged += new SelectionChangedEventHandler(comboBox1_SelectionChanged);
这是事件调用
void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
comboBox2.SelectedIndex = comboBox1.SelectedIndex;
//do other work here
}
我的应用程序中确实有类似的东西。您必须使用 ObservableCollection<> 而不是 List<>。
我有 2 个 ComboBoxes,您可以选择在第一个 ComboBox 中“分组”结果,在第二个 ComboBox 中,您可以根据需要进行更详细的说明。
第一个有“安全、国家、部门”,第二个可以有证券、国家或部门的列表……取决于第一个选择。
为此,我将组合框绑定到 ObservableCollection。当用户在 ComboBox1 中选择某些内容时,我将从 SelectionChanged 事件中知道它,并将用国家、部门或证券填充 ComboBox2 的 ObservableCollection。
然后 ObservableCollection<> 将“自动”通知 comboBox2 有新项目并将刷新。
哦,要让它工作,你必须使用 MVVM 模式......但我假设你已经在使用它了。
它应该是这样的:
<ComboBox x:Name="cbModels"
ItemsSource="{Binding ElementName=comboBox1,Path=SelectedItem.Orders}"
DisplayMemberPath="OrderId"/>
显示在 中选择的客户的SelectedItem.Orders
订单comboBox1
。