【问题标题】:WPF ComboBox bad blank valueWPF ComboBox 错误的空白值
【发布时间】:2016-12-16 20:45:49
【问题描述】:

我有一个绑定到一组数据的 WPF ComboBox。我没有权限直接修改控件,也不能更改数据。

我的 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;
}

【问题讨论】:

  • 感谢您的回复。不幸的是,由于绑定权限,我无法将新项目添加到组合框。根本原因是检查组合框是否已更改的函数。 RemovedItems.Count 和 AdditionalItems.Count 都需要大于零才能处理为已更改。我看到 2 个项目,其中一个是空白的(并且是选定的项目)。但它实际上并不存在,这意味着无论我选择什么项目,所选索引都是 0,因此 RemovedItems.Count 始终为 0,因此它认为没有任何变化。

标签: wpf drop-down-menu combobox


【解决方案1】:

我找到了解决方案。所选索引不起作用。问题出在数据上。我得到一个传递给盒子的 NULL 值。一旦我从 SQL 中删除了 NULL 返回,它就会按预期工作。

【讨论】:

    【解决方案2】:

    您可以通过将 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;
            }     
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 2014-06-14
      • 1970-01-01
      • 2013-11-06
      • 1970-01-01
      相关资源
      最近更新 更多