【问题标题】:Silverlight MVVM ListBoxItem IsSelectedSilverlight MVVM ListBoxItem IsSelected
【发布时间】:2010-10-19 11:35:38
【问题描述】:

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

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

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

【问题讨论】:

  • 运气好能解决这个问题吗?我面临着完全相同的问题。

标签: silverlight mvvm listbox


【解决方案1】:

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

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

ib.

【讨论】:

    【解决方案2】:

    我是这样做的:

    <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 中的相对绑定”来找到它)。

    【讨论】:

      猜你喜欢
      • 2011-02-05
      • 2010-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多