我有一组绑定到 ListBox 的 ViewModel。我正在尝试将每个的 IsSelected 属性绑定在一起。在 WPF 中,它通过设置样式来工作:
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}" />
</Style>
这在 Silverlight 中不起作用。我怎样才能做到这一点?
我有一组绑定到 ListBox 的 ViewModel。我正在尝试将每个的 IsSelected 属性绑定在一起。在 WPF 中,它通过设置样式来工作:
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}" />
</Style>
这在 Silverlight 中不起作用。我怎样才能做到这一点?
在 Silverlight 中,您无法创建“全局”样式,即修改某种类型的所有控件的样式。你的风格需要一个键,你的控件需要引用它。
此外,TargetType 只需要控件类型名称。Silverlight 不支持 x:Type 扩展。
ib。
这是我的做法:
<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 中的相对绑定”来找到它)。