C# 如何根据我的第一个组合框的选择绑定以下列表框
我有两个组合框。(组合1和组合2)C# 如何根据我的第一个组合框的选择绑定以下列表框,c#,wpf,xaml,C#,Wpf,Xaml,我有两个组合框。(组合1和组合2) 第一个包含两个选项。车型和车轮。 第二个包含4个选项。宝马,奔驰,四轮,五轮 我希望第二个组合框的信息仅显示宝马和梅赛德斯(如果组合框1被选为车型),并且仅显示4个车轮和5个车轮(如果组合框1被选为车轮) 我正在寻找一种方法来调用收集相应的,但无法。请告诉我怎么做。谢谢 <ComboBox Name="combo1" Width="120"> <ListBoxItem Name="box1" Content="
第一个包含两个选项。车型和车轮。
第二个包含4个选项。宝马,奔驰,四轮,五轮 我希望第二个组合框的信息仅显示宝马和梅赛德斯(如果组合框1被选为车型),并且仅显示4个车轮和5个车轮(如果组合框1被选为车轮) 我正在寻找一种方法来调用收集相应的,但无法。请告诉我怎么做。谢谢
<ComboBox Name="combo1" Width="120">
<ListBoxItem Name="box1" Content="Car Model"/>
<ListBoxItem Name="box2" Content="Car Wheels"/>
</ComboBox>
<ComboBox Name="combo2" Width="120">
<ListBoxItem Name="box3" Content="BMW"/>
<ListBoxItem Name="box4" Content="Mercedes"/>
<ListBoxItem Name="box5" Content="4 Wheels"/>
<ListBoxItem Name="box6" Content="5 Wheels"/>
</ComboBox>
private void Button_Click(object sender, RoutedEventArgs e)
{
if (comboBox1.Text == "Car Model")
{
comboBox2.Items.Clear();
comboBox2.Items.Add(box3);
comboBox2.Items.Add(box4);
}
else
{
comboBox2.Items.Clear();
comboBox2.Items.Add(box5);
comboBox2.Items.Add(box6);
}
}
私有无效按钮\u单击(对象发送者,路由目标e)
{
如果(comboBox1.Text==“车型”)
{
comboBox2.Items.Clear();
组合框2.Items.Add(框3);
组合框2.Items.Add(框4);
}
其他的
{
comboBox2.Items.Clear();
组合框2.Items.Add(框5);
组合框2.Items.Add(框6);
}
}
这不起作用,因为我需要单击按钮才能实现。只要第一个组合框(combo1)有一个选中的选项,我就希望它发生
此外,当我创建时,这些listboxitems会自动存储在一个集合中,因此我相信它们已经以数组的形式存储。我想知道如何访问这个数组,这样我就可以循环使用它,而不是逐个添加
请建议我如何做这些。谢谢 首先您应该添加
组合框项目
,而不是列表框项目
<ComboBox Name="combo1" Width="120">
<ListBoxItem Name="box1" Content="Car Model"/>
<ListBoxItem Name="box2" Content="Car Wheels"/>
</ComboBox>
<ComboBox Name="combo2" Width="120">
<ListBoxItem Name="box3" Content="BMW"/>
<ListBoxItem Name="box4" Content="Mercedes"/>
<ListBoxItem Name="box5" Content="4 Wheels"/>
<ListBoxItem Name="box6" Content="5 Wheels"/>
</ComboBox>
private void Button_Click(object sender, RoutedEventArgs e)
{
if (comboBox1.Text == "Car Model")
{
comboBox2.Items.Clear();
comboBox2.Items.Add(box3);
comboBox2.Items.Add(box4);
}
else
{
comboBox2.Items.Clear();
comboBox2.Items.Add(box5);
comboBox2.Items.Add(box6);
}
}
其次,您可以在XAML中完成所有这些,无需使用代码隐藏。在resource部分下创建数组,并根据第一个组合框中的SelectedItem设置ItemsSource。以下是您如何以XAML方式进行操作:
<StackPanel>
<StackPanel.Resources>
<x:Array Type="ComboBoxItem" x:Key="ModelsArray">
<ComboBoxItem Name="box3" Content="BMW"/>
<ComboBoxItem Name="box4" Content="Mercedes"/>
</x:Array>
<x:Array Type="ComboBoxItem" x:Key="WheelsArray">
<ComboBoxItem Name="box5" Content="4 Wheels"/>
<ComboBoxItem Name="box6" Content="5 Wheels"/>
</x:Array>
</StackPanel.Resources>
<ComboBox Name="combo1" Width="120">
<ComboBoxItem Name="box1" Content="Car Model"/>
<ComboBoxItem Name="box2" Content="Car Wheels"/>
</ComboBox>
<ComboBox Name="combo2" Width="120">
<ComboBox.Style>
<Style TargetType="ComboBox">
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedItem.Content,
ElementName=combo1}" Value="Car Model">
<Setter Property="ItemsSource"
Value="{StaticResource ModelsArray}"/>
</DataTrigger>
<DataTrigger Binding="{Binding SelectedItem.Content,
ElementName=combo1}" Value="Car Wheels">
<Setter Property="ItemsSource"
Value="{StaticResource WheelsArray}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
</StackPanel>
代码隐藏
:
private void ComboBox_SelectionChanged(object sender,
SelectionChangedEventArgs e)
{
if (((ComboBoxItem)combo1.SelectedItem).Content.ToString() == "Car Model")
{
combo2.Items.Clear();
combo2.Items.Add("BMW");
combo2.Items.Add("Mercedes");
}
else
{
combo2.Items.Clear();
combo2.Items.Add("4 Wheels");
combo2.Items.Add("5 Wheels");
}
}