2012-07-11 60 views
-1

我有一個綁定到一組數據的WPF組合框。我無權直接修改控件,也無法更改數據。WPF組合框不良的空白值

我在我的ComboBox中返回了1個項目,但實際上有2行;空白行和我的期望值。兩者似乎都有一個索引值0.我不想看到這個空行,只是我自己選擇的ComboBox中的預期數據。我在這裏查看了每個人的相關帖子,但沒有一個解決方案適用於我的案例。我一直在編程很長一段時間,但對WPF來說還是比較新的。謝謝您的幫助。

XAML

<MyComboBox Name="myTemplate5" MyLookup="Lookup" MyFilter="att_idn=-37" MyData="Detail" MyName="comp_tmpl_idn_srt" ModCde="31" MyEmptyValue="0" ToolTip="Have a nice day" Margin="0,2.5,30,2.5" MinWidth="120" Grid.Column="1" SelectionChanged="myTemplate5_SelectionChanged" /> 

C#

private void myTemplate1_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    MyComboBox work = sender as MyComboBox; 
    if (work != null && work.HasSelectionChanged(e)) 
    { 
     int compTmplId = int.Parse(work.SelectedValue.ToString()); 
     if (!_wpfIsDumb && !ChangeComponent(compTmplId)) 
     { 
      _wpfIsDumb = true; 
      work.SelectedItem = e.RemovedItems[0]; 
      _wpfIsDumb = false; 
     } 
    } 
} 

public bool HasSelectionChanged(SelectionChangedEventArgs e) 
{ 
    if (e.RemovedItems.Count > 0 && e.AddedItems.Count > 0) 
     return true; 
    else 
     return false; 
} 
+0

謝謝你的回覆。 Unfortunatley由於綁定權限,我無法將新項目添加到組合框。根本原因是檢查組合框是否更改的功能。 RemovedItems.Count和AddedItems.Count都需要大於零才能處理更改。我看到兩個項目,其中一個是空白的(並且是選定的項目)。它並不是真的存在,這意味着無論我選擇哪個項目,所選索引都是0,所以RemovedItems.Count始終爲0,因此它認爲沒有任何更改。 – 2012-07-19 20:05:04

回答

1

可以由selectedIndex設置爲0,達到了這個

XAML:

<ComboBox Name="myCB" 
        SelectedIndex="0" 
        MaxWidth="200" MaxHeight="25" /> 

代碼隱藏:

namespace nsComboBox 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 

      myCB.Items.Add("Item 1"); 
      myCB.Items.Add("Item 2"); 
      myCB.Items.Add("Item 3"); 

      myCB.SelectedIndex = 0; 
     }  
    } 
} 
2

我找到了解決方案。選定的索引不起作用。問題出在數據上。我得到一個NULL值傳遞給框。一旦我從SQL中刪除NULL返回,那麼它按預期工作。