在WPF中,我曾经这样做过:
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
</ListBox.ItemContainerStyle>
这不适用于Windows Phone 8应用程序,因为我得到了一个说明该属性是只读的预测。
我该怎么做这个简单的任务?
感谢。
答案 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>