Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF组合框错误的空白值_Wpf_Drop Down Menu_Combobox - Fatal编程技术网

WPF组合框错误的空白值

WPF组合框错误的空白值,wpf,drop-down-menu,combobox,Wpf,Drop Down Menu,Combobox,我有一个WPF组合框,它绑定到一组数据。我没有直接修改控件的权限,也不能更改数据 在我的组合框中返回1项,但实际上有2行;空白行和我期望的值。两者的索引值似乎都为0。我不想看到这一空行,只想看到组合框中自动选中的预期数据。我已经浏览了这里每个人的相关帖子,但没有一个解决方案对我的案例有效。我已经编程很长时间了,但对WPF还是相当陌生的。谢谢你的帮助 XAML 可以通过将SelectedIndex设置为0来实现这一点 XAML: 代码隐藏: namespace nsComboBox {

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

在我的组合框中返回1项,但实际上有2行;空白行和我期望的值。两者的索引值似乎都为0。我不想看到这一空行,只想看到组合框中自动选中的预期数据。我已经浏览了这里每个人的相关帖子,但没有一个解决方案对我的案例有效。我已经编程很长时间了,但对WPF还是相当陌生的。谢谢你的帮助

XAML


可以通过将SelectedIndex设置为0来实现这一点

XAML:


代码隐藏:

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;
        }     
    }
}
namespace-nsComboBox
{
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
myCB.项目添加(“项目1”);
myCB.项目添加(“项目2”);
myCB.项目添加(“项目3”);
myCB.SelectedIndex=0;
}     
}
}

我找到了解决方案。所选索引不起作用。问题在于数据。我得到一个传递给该框的空值。一旦我从SQL中去掉了空返回,它就可以正常工作。

谢谢您的回复。不幸的是,由于绑定权限,我无法向组合框添加新项目。根本原因是检查组合框是否已更改的函数。RemovedItems.Count和AddedItems.Count都需要大于零,才能按更改进行处理。但是我看到了两个项目,其中一个是空白的(并且是选中的项目)。但它实际上并不存在,这意味着无论我选择哪个项目,所选索引都是0,因此RemovedItems.Count始终是0,因此它认为没有任何更改。
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;
}
<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;
        }     
    }
}