Combobox MVVM Silverlight сообщение - PullRequest
0 голосов
/ 14 июня 2011

Я работаю в модели Silverlight MVVM.Столкнувшись с небольшой проблемой:

Существует комбинированный список, который отображает два значения (одно из них выбрано по умолчанию), когда пользователь изменяет значение комбинированного списка, отображается окно сообщения, которое запрашивает подтверждение пользователя,если «да», то значение будет изменено, а если «нет», то значение останется прежним, окно сообщения будет сохранено в ViewModel и сгенерировано для свойства set выбранного элемента.Проблема, с которой я сталкиваюсь, заключается в том, что когда пользователь выбирает Нет (или Отмена), даже если ничего не происходит (согласно функциональности), но поле со списком не возвращается в исходное положение и остается в выбранном положении (то есть поле со списком остается в развернутом положении).

Почему он остается в этом расширенном положении и как вернуть его в исходное положение ??

Вот некоторая часть кода, надеюсь, это поможет понять:

MessageBoxResult msg = MessageBox.Show("Really delete?","Confirm delete", MessageBoxButtons.OKCancel)

if(msg == "OK")
{
   Do this;
}
else
{
Do nothing;
}

Теперь в Combobox есть два значения: «A» и «B».Это всплывающее окно появится, когда пользователь изменит значение, т. Е. Если значением по умолчанию является A, а пользователь изменит его на B, то всплывающее окно спросит, хотите ли вы продолжить или нет, когда пользователь нажимает кнопку ОК, все работает нормально, но когда пользователь нажимает кнопку Отменитьхотя в приложении ничего не происходит, значение изменяется в пользовательском интерфейсе, т. е. пользователь сказал «Отмена» при изменении значения с A на B, но затем B отображается в выпадающем списке в качестве выбранного элемента.

1 Ответ

0 голосов
/ 21 июня 2011

Вам необходимо сбросить значение SelectedItem поля со списком обратно к исходному значению.

Причина в том, что привязка значения в ComboBox происходит до события изменения SelectedItem. Это означает, что значение для вашего combox уже было изменено приложением еще до отображения сообщения. Если вам нужен ComboBox для отображения исходного значения, вам нужно сбросить его обратно в коде.

...