Jest to roztwór roboczy, jednak gdy wybór zmienia SelectedItemsProperty nie odświeżyć powiązań ...
można utworzyć niestandardową formantu zgodnie z poniższym opisem:
public class MyListBox: ListBox{
public MyListBox()
{
this.SelectionChanged += (s,e)=>{ RefreshBindings(); };
}
private void RefreshBindings()
{
BindingExpression be =
(BindingExpression) GetBindingExpression(
SelectedItemsProperty);
if(be!=null){
bd.UpdateTarget();
}
}
}
lub w aplikacji można zdefiniować zdarzenia w każdym listbox jak pokazano poniżej ..
myListBox.SelectionChanged += (s,e) => {
BindingExpression be =
(BindingExpression) myListBox.GetBindingExpression(
ListBox.SelectedItemsProperty);
if(be!=null){
bd.UpdateTarget();
}
};
Nie mam kilka wybranych elementów i chcę, aby pokazać je w ListBox w stanie wybranym – Polaris
Ponieważ własność jest tylko do odczytu, nie można go używać na co Cię chcieć. Jedyne, co mogę wymyślić, to ustawić indywidualne właściwości 'ListBoxItem.IsSelected'. Jeśli nalegasz na wiązanie, najłatwiejszą ścieżką byłoby utworzenie np. dołączone SelectedItems 'DependencyProperty' z niestandardową logiką w zmienionej właściwości obsługi zdarzenia. – wpfwannabe