.net - 使用 ListBox 和可观察集合作为调试日志的问题

标签 .net wpf listbox observablecollection

我有一个绑定(bind)到 View 模型可观察集合的列表框:

这工作正常,减去一个小问题...假设可观察集合包含字符串,当具有相同值的条目添加到集合中时,整个事情就会崩溃,处理这个问题的最佳方法是什么?自定义结构而不是字符串,然后是数据模板?

编辑:完全忘记解释行为...当我单击单个条目时,它会选择多个值,具有相同文本的所有其他值都会被选中。

最佳答案

此问题的存在是因为它是 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" />

关于.net - 使用 ListBox 和可观察集合作为调试日志的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1615100/

相关文章:

python - Tkinter:列表框分隔符、禁用项、键盘导航?

c# - 如何将 viewModel 绑定(bind)到 View

C# 如何使用 RightClick 选择 ListBox 项目?

c# - F# List.map 在 C# 中等效?

c# - 系统.图纸引用

c# - DispatcherTimer 未在 wpf 应用程序中触发

c# - 在 MVVM 中动态创建控件

.net - 将音频文件WCF发送到WP7

c# - 使用 StructureMap 注入(inject)工厂方法

WPF 控件移动但其装饰器 - 不是 :"/