4

我有一组绑定到 ListBox 的 ViewModel。我正在尝试将每个的 IsSelected 属性绑定在一起。在 WPF 中,它通过设置样式来工作:

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

这在 Silverlight 中不起作用。我怎样才能做到这一点?

4

2 回答 2

2

在 Silverlight 中,您无法创建“全局”样式,即修改某种类型的所有控件的样式。你的风格需要一个键,你的控件需要引用它。

此外,TargetType 只需要控件类型名称。Silverlight 不支持 x:Type 扩展。

ib。

于 2009-04-15T20:26:53.400 回答
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 中的相对绑定”来找到它)。

于 2009-04-16T19:35:44.293 回答