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

发布于 2024-08-08 13:37:29 字数 195 浏览 5 评论 0原文

我有一个绑定到视图模型可观察集合的列表框:

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

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

I have a listbox bound to a view model observable collection:

This works fine, minus one little hitch... assuming that the observable collection contains strings, the whole thing breaks down when entries with identical values get added to the collection, what is the best way to handle this? Custom struct instead of strings and then a datatemplate?

edit: completely forgot to explain the behavior... it selects multiple values when i click on a single entry, all other values with the same text get selected.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迷离° 2024-08-15 13:37:30

这个问题的存在是因为它是选择器派生控件的本质。当您开始从 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" />

This problem exists because its the nature of the Selector derived control. When you start to select an item from the ObservableCollection type and your collection contains duplicate strings, the selector is confused as to which item it has selected. You need to create a new simple class/struct and put your string in there.

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" } });

and like so.

<ListBox ItemsSource="{Binding MyList}" DisplayMemberPath="Name" />
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文