2010-07-25 40 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

相關問題