2012-07-11 58 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返回,那么它按预期工作。