WPF ListBox + Binding + IDataErrorInfo =? - PullRequest
3 голосов
/ 04 августа 2009

У меня есть приложение WPF MVVM. В View у меня есть мультиселект ListBox. В ViewModel у меня есть свойство для выбранных элементов в списке.

Используя технику, аналогичную описанной в ответе на этот вопрос, я могу связать свою собственность с ListBox.

Но я также хочу сделать проверку данных через IDataErrorInfo. Все, что я хочу сделать, это проверить, что пользователь выбрал хотя бы один элемент в списке. Добавление ValidatesOnDataErrors=True к привязке не работает.

Есть ли способ иметь список с множественным выбором, связанный с IDataErrorInfo?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2014

Если вы используете поведение для привязки списка ViewModel с выбранными элементами ListBox, обновите привязку вручную после добавления / удаления элементов:

var binding = BindingOperations.GetBindingExpression(this, SelectedItemsListBoxBehavior.SelectedItemsProperty);
if (binding != null)binding.UpdateSource();
0 голосов
/ 25 июня 2011

Даже при множественном выборе ListBox вы можете привязать SelectedItem

 SelectedItem="{Binding FakeSelectedItem, ValidatesOnDataErrors=True}"

, а затем выполните проверку при изменении этого свойства.

PS
Для привязки я использую это решение MVVM Multiselect Listbox

...