我有一个绑定到视图模型可观察集合的列表框:
这样可以正常工作,减去一个小故障......假设可观察集合包含字符串,当具有相同值的条目添加到集合时,整个事情就会崩溃,处理此问题的最佳方法是什么?自定义结构而不是字符串,然后是datatemplate?
编辑:完全忘记解释行为...当我点击一个条目时,它会选择多个值,所有其他值都会被选中。
答案 0 :(得分:3)
存在此问题是因为它具有Selector派生控件的性质。当您开始从ObservableCollection类型中选择一个项目并且您的集合包含重复的字符串时,选择器会对它所选择的项目感到困惑。您需要创建一个新的简单类/结构并将字符串放在那里。
public class Info
{
public string Name { get; set; }
}
// ..
MyList = new ObservableCollection<Info>(new List<Info> { new Info { Name = "Hello World" }, new Info { Name = "Hello World" }, new Info { Name = "Hello World" } });
并且喜欢这样。
<ListBox ItemsSource="{Binding MyList}" DisplayMemberPath="Name" />