Обработка ошибок для AutoCompleteBox с помощью набора инструментов Silverlight 3 + MVVM Light - PullRequest
0 голосов
/ 04 июня 2010

Я пытаюсь создать UserControl, который содержит AutoCompleteBox. Я хочу использовать свойство SelectedItem этого AutoCompleteBox, чтобы заполнить другие элементы управления UserControl информацией, основанной на том, какой элемент выбран пользователем. Чтобы предотвратить срабатывание SelectedItem каждый раз, когда пользователь «перемещается» между элементами в раскрывающемся меню, я создал EventToCommand, который выполняется для события DropDownClosed следующим образом:

Команда имеет тип: public RelayCommand SelectedItemCommand {get; приватный набор; }

Это прекрасно работает, за исключением случая, когда пользователь начинает печатать что-то, у которого есть совпадение в начале, но если пользователь продолжает печатать, и соответствия больше нет, тогда DropDown закрывается, и никакой элемент фактически не выбирается. Это дает мне ошибку, которая говорит:

Невозможно привести объект типа 'System.Windows.RoutedPropertyChangedEventArgs`1 [System.Boolean]' к типу 'MyProject.ViewModels.MyItem'

Я попытался сделать оператор try-catch в методе Command для команды, но, похоже, исключение сработало еще до того, как я вхожу в этот метод.

Мой вопрос: Как я могу предотвратить запуск команды, если нет совпадения (то есть, нет фактического SelectedItem в AutoCompleteBox)?

1 Ответ

0 голосов
/ 04 июня 2010

Используете ли вы PassEventArgsToCommand? В этом случае RelayCommand должен быть RelayCommand , и CommandParameter может не использоваться. Это ограничение интерфейса ICommand, который может иметь только один CommandParameter. Досадно, я знаю, но обычно я могу использовать другой способ получить то, что я хочу (например, привязав SelectedItem к свойству на моей виртуальной машине с привязкой TwoWay).

Дайте мне знать, Laurent

...