将 ListBoxItem.ItemSelected 绑定到 Silverlight 中的绑定项

发布于 2024-09-11 11:53:41 字数 887 浏览 4 评论 0原文

我使用 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 技术交流群。

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

发布评论

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

评论(1

淡淡の花香 2024-09-18 11:53:41

我知道的最简单的方法是重载 DataTemplate 并使其看起来像 ListBoxItem 选择。我使用 Blend 4.0 Silverlight SDK 中的 DataStateBehavior 将 IsSelected 属性与正确的外观联系起来。

<i:Interaction.Behaviors>
    <ei:DataStateBehavior Binding="{Binding IsSelected, Mode=TwoWay}" Value="True" TrueState="Selected" FalseState="Unselected"/>                   
</i:Interaction.Behaviors>

我没有粘贴整个内容,而是链接到我添加到博客中的帖子 这里

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.

<i:Interaction.Behaviors>
    <ei:DataStateBehavior Binding="{Binding IsSelected, Mode=TwoWay}" Value="True" TrueState="Selected" FalseState="Unselected"/>                   
</i:Interaction.Behaviors>

Rather than paste the entire thing, I'm linking to a post I added to my blog here.

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