2009-04-14 87 views
4

我有一個綁定到ListBox的ViewModel的集合。我試圖將每個的IsSelected屬性綁定在一起。在WPF中,它通過設置樣式來工作:Silverlight MVVM ListBoxItem IsSelected

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

這在Silverlight中不起作用。我怎樣才能做到這一點?

+0

有沒有什麼運氣可以解決這個問題?我面對完全相同的問題。 – 2009-11-05 12:42:22

回答

2

在Silverlight中,您無法創建「全局」樣式,即修改某種類型的所有控件的樣式。你的風格需要一把鑰匙,而你的控制需要引用它。

另外,TargetType只需要控件類型名稱。 Silverlight不支持x:Type擴展。

ib。

1

這裏是我如何做到這一點:

<ListBox.ItemTemplate> 
    <DataTemplate> 
... 
<CheckBox VerticalAlignment="Top" HorizontalAlignment="Left" 
      x:Name="CheckBox1" IsChecked="True" Grid.Row="0"> 
    <inf:BindingHelper.Binding> 
     <inf:BindingProperties TargetProperty="Visibility" SourceProperty="IsSelected" 
      Converter="{StaticResource VisibilityConverter}" 
      RelativeSourceAncestorType="ListBoxItem" /> 
    </inf:BindingHelper.Binding> 
</CheckBox> 
... 
    </DataTemplate> 
</ListBox.ItemTemplate> 

你需要做的相對結合,這並不在Silverlight中存在的不幸...... BindingHelper是一個輔助類,它克服了這一限制(搜索「相對在silverlight綁定「來找到它)。