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