将 ListBoxItem.ItemSelected 绑定到 Silverlight 中的绑定项
我使用 MVVM 模式 和 Silverlight 4 将 TODO 项集合绑定到 ListBox。
每个 TODO
实体上都有一个属性 IsSelected
。这允许在绑定回 ViewModel 的 UI 中进行多个选择。同时,ViewModel 所做的任何更改都会反映在视图中。
我基本上正在尝试执行本答案中建议的操作。
不幸的是,在 Silverlight(而不是 WPF)中,我无法找到使用模板执行此操作的方法,因为 SL4 中不支持样式设置器中的绑定。
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected"
Value="{Binding Mode=TwoWay, Path=IsSelected}"/>
</Style>
</ListBox.ItemContainerStyle>
然而,与任何其他方法不同 - 这似乎是所选项目列表的双向绑定最可靠的方法。
如何在代码隐藏或 XAML 中表达此绑定?
I am using MVVM pattern with Silverlight 4 to bind a collection of TODO items to a ListBox.
There is a property IsSelected
on each TODO
entity. This allow for multiple selections to be made in the UI that are bound back to the ViewModel. At the same time any changes made by the ViewModel get reflected in the View.
I am basically trying to do what was suggested in this answer.
Unfortunately in Silverlight (as opposed to WPF) I just cannot find a way to do this with the template since Bindings in a Style Setter are not supported in SL4.
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected"
Value="{Binding Mode=TwoWay, Path=IsSelected}"/>
</Style>
</ListBox.ItemContainerStyle>
However unlike any other method - this seems to be the most reliable for two way binding of a selected items list.
How can I express this binding in codebehind or XAML?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我知道的最简单的方法是重载 DataTemplate 并使其看起来像 ListBoxItem 选择。我使用 Blend 4.0 Silverlight SDK 中的 DataStateBehavior 将 IsSelected 属性与正确的外观联系起来。
我没有粘贴整个内容,而是链接到我添加到博客中的帖子 这里。
The easiest way I know of is to overload the DataTemplate and make it look like a ListBoxItem selection. I used a DataStateBehavior from the Blend 4.0 Silverlight SDK to tie the IsSelected property to the correct look and feel.
Rather than paste the entire thing, I'm linking to a post I added to my blog here.