我之前遇到过这个问题,似乎不支持通过属性设置器进行绑定。但是,有一种解决方法。您可以继承 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>