【发布时间】:2016-10-27 19:29:45
【问题描述】:
有没有办法在 WPF 中的事件 SelectionChanged(在 ListBox 上)中将 ListBox 的选定项目作为 ListBoxItem?
现在,当我调用 listBox.SelectedItems 时,我会以我的数据源格式获取项目列表。
例如,当我创建 ListBox 时,我将其绑定到 CustomListBoxViewModel 作为数据源,所以当我调用 SelectedItems 时,我会得到 CustomListBoxViewModel 对象的列表。
谢谢!
编辑:
所选答案中给出的代码非常适合我的用例。
另一方面,我完全理解这违反了 MVVM 模式。我将使用您在 xaml 视图后面的代码中提供的代码。
我最初的问题背后的原因是我需要实现一个ListBox,其中有一些禁用的ListBoxItems。这些项目必须是不可选择的。
我尝试在 ListBoxItems 上使用附加属性 IsSelectable,但效果不佳。此附加属性受到post 的极大启发。问题是当我直接选择一个禁用的项目时,附加的属性工作得很好。无法选择该项目并且它不在 SelectedItems 集合中。但是,如果我想通过按 CTRL+A 来选择所有项目,则所有 ListBoxItems 甚至被禁用的项目都被选中,并且在 SelectedItems 集合中找到。
【问题讨论】:
-
不,这不是它的工作原理。
-
@Will 我会用我想要这样做的原因更新问题。这是我想到的“最好”的做法……也许有更好的做法?
标签: c# wpf xaml data-binding wpf-controls