wpf - ListBox.SelectedItems 的双向手动绑定(bind)实现?

标签 wpf data-binding listbox

我一直在尝试查看是否有一种简单/聪明的方法来实现与 ListBox.SelectedItems 的绑定(bind)。如果您自己尝试过,您就会知道,使用 BindingExtension 的标记绑定(bind)将不起作用——该属性不支持它。因此,您需要为 SelectionChanged 连接一个处理程序并尝试该路线。我得到的最接近的是这篇文章:

http://alexshed.spaces.live.com/blog/cns!71C72270309CE838!149.entry

更新:上述博客不再可用,该作者当前博客is here我能找到的与引用的博客文章最接近的是 this StackOverflow answer .

它在一个方便的附加属性中实现了所有必要的 C#。但它将“绑定(bind)”实现为单向、目标到源。我想要双向绑定(bind)。

有任何想法吗?

最佳答案

我找到了一个优雅的解决方案,我刚刚抽出时间来写一个 blog post about it .

我所做的是创建一个附加属性 SynchronizedSelectedItems,您可以在 ListBox(实际上是 DataGrid)上设置它。您将它数据绑定(bind)到一个集合,然后,通过一点魔术,ListBox 上的 SelectedItems 属性和您的集合保持同步。您可以从我的博客文章中下载所有代码。

“魔术”是一个类,它监听任一集合中的 CollectionChanged 事件,并将更改传播到另一个集合。

关于wpf - ListBox.SelectedItems 的双向手动绑定(bind)实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/414074/

相关文章:

.net - WPF 中的多列列表框

wpf - 如何在 XAML 中更改 ToggleButton 的自定义内容

WPF:使用哪个集合类

javascript - 从外部源绑定(bind)图像

vb.net - 限制vb.net中列表框中的选择

c# - WP7 让回车键将文本从文本框发送到文本 block

c# - 在 WPF 中运行时创建的字段的表单验证

WPF ListView 移除鼠标悬停效果

c# - 在 GridView 中显示增量数据的最佳方式是什么?

c# - WPF/XAML/MVVM - 根据条件设置复选框的状态