2010-07-25 106 views
0

我正在使用MVVM模式Silverlight 4将TODO项目集合绑定到ListBox。绑定ListBoxItem.ItemSelected到Silverlight中的绑定项目

每个TODO实体上都有一个属性IsSelected。这允许在UI中进行多重选择,这些选择被绑定回ViewModel。同时,ViewModel所做的任何更改都会反映在视图中。

我基本上试图做的是suggested in this answer

不幸的是在Silverlight中(而不是WPF),我只是无法找到一种方法来使用SL4中的Bindings in a Style Setter are not supported以及模板。

<ListBox.ItemContainerStyle> 
    <Style TargetType="{x:Type ListBoxItem}"> 
     <Setter Property="IsSelected" 
       Value="{Binding Mode=TwoWay, Path=IsSelected}"/> 
    </Style> 
</ListBox.ItemContainerStyle> 

然而不同于其他任何方法 - 这似乎是最可靠的双向选择的项目列表的结合。

如何在代码隐藏或XAML中表达此绑定?

回答

3

我知道的最简单的方法是重载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> 

而不是粘贴整个事情,我链接到我添加到我的博客here后。

+0

+1 mate,我只是用这种方式实现了一些东西,而你的博客文章帮助我确认它会起作用! ;) – Town 2011-09-02 16:14:14

+0

这似乎不能在WPF中正常工作。这是一个WPF错误?出于某种原因,填充颜色不会出现在最初选择的人员身上。直到我手动取消选中并重新检查框时,才会显示颜色。验证它在Silverlight中有效。 – kbeal2k 2012-12-05 15:34:02

+0

按照原始问题所述,您不应该在WPF中需要此解决方案。如果您遇到麻烦,我会建议您按照问题中的答案链接或发布一个新问题,并提供您所看到的详情。 – WiredPrairie 2012-12-06 11:42:44

相关问题