[英]How to bind the following listboxes depending on the selection of my first combo box
我有2個組合框。 (combo1和combo2)
第一個包含2個選項。 汽車模型和車輪。
第二個包含4個選項。 寶馬,奔馳,4輪,5輪。
我希望第二個組合框的信息僅在選擇組合框1作為汽車模型時顯示BMW和奔馳,而在選擇組合框1作為汽車車輪時僅顯示4個車輪和5個車輪。
我正在尋找一種相應地調用集合但無法調用的方法。 請提出建議,我該怎么做。 謝謝。
<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);
}
}
這不起作用,因為我需要單擊按鈕才能發生這種情況。 我希望只要第一個combobox(combo1)具有選定的選項,它就會發生。
這些列表框項目在創建時也會自動保存在集合中,因此我相信它們已經以數組形式存儲。 我想知道如何訪問此數組,以便可以遍歷該數組,而不是一個接一個地添加。
請建議我該怎么做。 謝謝。
首先 ,您應該添加ComboBoxItem
而不是ListBoxItem
。
其次 ,您可以在XAML中完成所有這些操作,而無需使用后面的代碼。 在資源部分下創建數組,並在第一個comboBox中基於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>
要么
如果仍要在后面的代碼中執行此操作,請鈎掛SelectionChanged
事件。
<ComboBox Name="combo1" Width="120" SelectionChanged="ComboBox_SelectionChanged">
<ComboBoxItem Name="box1" Content="Car Model"/>
<ComboBoxItem Name="box2" Content="Car Wheels"/>
</ComboBox>
<ComboBox Name="combo2" Width="120"/>
Code behind
:
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");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.