如何链接2个组合框

时间:2016-05-20 11:53:04

标签: c# wpf combobox

我有2个组合框,每个组合框有2个方法,用于_Loaded和_Selection已更改

我想在第一个组合框中选择一个位置,然后下一个组合框应列出该特定位置的一堆日期

这是我到目前为止所拥有的:

    <ComboBox 
    x:Name="comboBoxLocation" 
    Text="Lokation"       
    HorizontalAlignment="Left" Margin="50,305,0,0" 
    VerticalAlignment="Top"  
    Width="120" 
    Loaded="ComboBoxLocation_Loaded" 
    SelectionChanged="ComboBoxLocation_SelectionChanged"/>

    <ComboBox x:Name="comboBoxDate" 
    Text="Dato" HorizontalAlignment="Left" 
    Margin="195,305,0,0" 
    VerticalAlignment="Top" Width="120" 
    Loaded="ComboBoxDate_Loaded"  
    SelectionChanged="ComboBoxDate_SelectionChanged"/>

    private void ComboBoxLocation_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var comboBoxLocation = sender as ComboBox;

        comboBoxDate.SelectedIndex = 0;
        comboBoxDate.ItemsSource = controller.GetBusTimes();

        //ComboBoxDate_Loaded(sender, e);
    }

    private void ComboBoxDate_Loaded(object sender, RoutedEventArgs e)
    {
        List<string> dataDate = controller.GetBusTimes();

        var comboBoxDate = sender as ComboBox;

        comboBoxDate.ItemsSource = dataDate;
    }

这似乎比我预期的要困难得多......我开始认为我可能在这里犯了一些根本性的错误......

我一直在摆弄这个...我可以设法在第一个框中显示位置列表,并在第二个框中显示该位置的相关日期。但是当我改变第一个位置时,日期保持不变......

我该怎么做?

3 个答案:

答案 0 :(得分:0)

试试这个,我用它来链接我的Windows窗体应用程序中的2个组合框。

默认情况下,将两个组合框选择设置为0 //Combobox1.SelectedIndex = 0;

 private void combobox1_SelectedIndexChanged(object sender, EventArgs e)
    {
       var combobox1VALUE= combobox1.Text;
    }

private void combobox2_DropDown(object sender, EventArgs e)
        {
           //Select datasouece according to combobox 1 data selection(combobox1VALUE) 
            combobox2.Items.Clear();
          //add data to combobox2

        }

答案 1 :(得分:0)

您的代码存在两个问题。

  1. 目前尚不清楚&amp; controller.GetBusTimes()如何获取有关更改位置的信息? 如果上述功能以某种方式知道位置变化并且仍未在另一个组合框中显示更新信息,那么

  2. 有关ItemSource更改后如何显示refresh组合框的信息,请参阅此答案

答案 2 :(得分:0)

为什么不单独绑定项目来源和所选项目?

<Combobox ItemsSource="{Binding ItempsProperty}" SelectedItem="{Binding StrValueProperty, Mode=TwoWay}" />

你可以在其他

的setter中设置一个属性