选择更改组合框WPF

本文关键字:WPF 组合 选择 | 更新日期: 2023-09-27 18:17:04

我想根据其他ComboBox的选择填充ComboBox。这两个组合框都是使用WCF从数据库填充的。我的问题是,在第一次选择它不工作(只是在第二次选择后,它的工作和显示结果从第一次选择)。

XAML

<ComboBox 
   x:Name="selClientCombo" 
   SelectionChanged="listEchipamente" 
   IsEditable="True" 
   SelectedIndex="-1" 
   HorizontalAlignment="Left" 
   Margin="455,35,0,0" 
   VerticalAlignment="Top" 
   Width="215" 
   ItemsSource="{Binding Mode=OneWay}"/>
<ComboBox 
   x:Name="selEchipamentCombo" 
   HorizontalAlignment="Left" 
   Margin="457,65,0,0" 
   VerticalAlignment="Top" 
   Width="213" 
   ItemsSource="{Binding}"/>

  private void listEchipamente(object sender, SelectionChangedEventArgs e)
        {
            List<string> echipamenteWCF = client.getEchipament(selClientCombo.Text).ToList();
            MessageBox.Show(" Client Selected !");
            if (selEchipamentCombo.Items.Count >0)
            {
                selEchipamentCombo.Items.Clear();
            }
                for (int i = 0; i < echipamenteWCF.Count(); i++)
                {
                    selEchipamentCombo.Items.Add(echipamenteWCF[i]);
                }
            }

选择更改组合框WPF

SelectionChanged被触发的时候,Text还没有更新(因此它保持以前的值)。

您应该访问底层数据项来获取Text:

if(selClientCombo.SelectedItem == null) return;
List<string> echipamenteWCF = 
                   client.getEchipament(selClientComo.SelectedItem.ToString()).ToList();
...

我认为ToString()将解决显示文本。您总是可以将SelectedItem强制转换为实际类型并轻松访问其字符串属性(显示为Text)。您还可以访问SelectedValue,条件是为ComboBox设置了一些SelectedValuePath