2015-10-11 115 views
1

我想根據其他ComboBox的選擇填充ComboBox。 這兩個組合框都使用WCF從數據庫填充。 我的問題是,在第一次選擇它不工作(第二次選擇後它是工作,它顯示從第一次選擇結果)。SelectionChanged Combobox WPF

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]); 
       } 

      } 

回答

0

當時SelectionChanged被激發時,Text尚未更新(因此它保持之前的值)。

你應該訪問底層數據項獲得文本來代替:

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

我推測ToString()將解決顯示文本。您始終可以將SelectedItem投射到實際類型,並輕鬆訪問其字符串屬性(顯示爲文本)。您還可以訪問SelectedValue,條件是爲ComboBox設置了一些SelectedValuePath

+1

非常感謝,它按預期工作。 – BMA

相關問題