【发布时间】:2012-06-12 05:13:21
【问题描述】:
我有多个组合框(具体来说:3),每个组合框的值取决于前一个组合框的选定值。有关如何在 WPF 中实现此功能的任何建议?
每个组合框都有列表作为其项目来源。
【问题讨论】:
我有多个组合框(具体来说:3),每个组合框的值取决于前一个组合框的选定值。有关如何在 WPF 中实现此功能的任何建议?
每个组合框都有列表作为其项目来源。
【问题讨论】:
让我们假设您的组合框的名称是 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 中选择的客户的订单。
【讨论】: