Combobox MVVM silverlight消息框

时间:2011-06-14 17:58:17

标签: silverlight mvvm messagebox

我在Silverlight MVVM模型中工作。面对一个小问题:

有一个组合框显示两个值(默认选择其中一个)当用户更改组合框的值时,会显示一个消息框,询问用户的确认,如果“是”,则值将为如果“否”,则值保持不变,消息框将保留在ViewModel中,并在选定的Item的set属性上触发。我面临的问题是当用户选择否(或取消)时,即使没有任何事情发生(根据功能),但组合框不会回到原始位置并且它保持在所选择的位置(即组合框保持在扩展位置)

为什么它会保持在扩展的位置以及如何将它带到原来的位置?

以下是代码的一部分,希望这有助于理解:

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

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

现在Combobox中有两个值表示'A'和& 'B'。当用户更改值时,此弹出窗口将会出现,即如果默认值为A且用户将其更改为B,则弹出窗口将询问您是否要继续,当用户单击时确定一切正常但用户点击取消时甚至虽然在应用程序中没有任何反应,但是在UI中更改了值,即用户已经说取消从A到B的值的更改,但是然后B也在组合框中显示为所选项目。

1 个答案:

答案 0 :(得分:0)

您需要将组合框的SelectedItem值重置为原始值。

原因是ComboBox中的值绑定发生在SelectedItem更改事件之前。这意味着即使在显示消息之前,应用程序也已更改了combox的值。如果您需要ComboBox显示原始值,则需要在代码中重新设置它。