如何在Windows Phone应用程序中绑定IsSelected ListboxItem属性?

时间:2013-05-25 17:21:24

标签: .net silverlight windows-phone-7 windows-phone-8 windows-phone

在WPF中,我曾经这样做过:

<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
        <Setter Property="IsSelected" Value="{Binding IsSelected}" />
    </Style>
</ListBox.ItemContainerStyle>

这不适用于Windows Phone 8应用程序,因为我得到了一个说明该属性是只读的预测。

我该怎么做这个简单的任务?

感谢。

1 个答案:

答案 0 :(得分:1)

之前我遇到过这个问题,似乎不支持通过属性设置器进行绑定。但是,有一种解决方法。您可以继承ListBox并覆盖PrepareContainerForItemOverride。在需要添加到列表的每个项目上调用此方法,这使其成为在那里设置绑定的理想位置。在这种情况下,你不需要对你的Xaml有任何特殊的东西

public class ListBoxEx : ListBox {
  protected override void PrepareContainerForItemOverride(System.Windows.DependencyObject element, object item) {
    base.PrepareContainerForItemOverride(element, item);
    ((ListBoxItem)element).IsSelected = ((MyModel)item).IsSelected;
  }
}
<local:ListBoxEx>
  <local:ListBoxEx.ItemTemplate>
    <DataTemplate>
      <!-- Bind your properties as you would normally do -->
    </DataTemplate>
  </local:ListBoxEx.ItemTemplate>
</local:ListBoxEx>