组合框MVVM silverlight消息框

组合框MVVM silverlight消息框,silverlight,mvvm,messagebox,Silverlight,Mvvm,Messagebox,我在Silverlight MVVM模型中工作。面对一个小问题: 有一个组合框,显示两个值。当用户更改组合框的值时,默认情况下会选择其中一个值。将显示一个消息框,要求用户确认,如果是,则值将更改,如果否,则值保持不变,messagebox保存在ViewModel中,并在选定项的set属性上激发。我所面临的问题是,当用户选择NoOr或Cancel时,即使根据功能没有发生任何事情,但组合框不会返回到原始位置,它仍保持在所选的位置。组合框保持在展开位置 为什么它会停留在扩展的位置,如何将其恢复到原来的

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

有一个组合框,显示两个值。当用户更改组合框的值时,默认情况下会选择其中一个值。将显示一个消息框,要求用户确认,如果是,则值将更改,如果否,则值保持不变,messagebox保存在ViewModel中,并在选定项的set属性上激发。我所面临的问题是,当用户选择NoOr或Cancel时,即使根据功能没有发生任何事情,但组合框不会返回到原始位置,它仍保持在所选的位置。组合框保持在展开位置

为什么它会停留在扩展的位置,如何将其恢复到原来的位置

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

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

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

现在组合框中有两个值,分别是“A”和“B”。当用户更改值时,即如果默认值为A,用户将其更改为B,则弹出窗口将询问您是否要继续,当用户单击“确定”时,一切正常,但当用户单击“取消”时,即使应用程序中未发生任何变化,该值也会在UI中发生更改,即用户已表示“取消”将值从A更改为B,但随后B也会作为所选项显示在组合框中

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


原因是组合框中的值的绑定发生在SelectedItem更改事件之前。这意味着combox的值甚至在消息显示之前就已经被应用程序更改了。如果需要组合框显示原始值,则需要在代码中重置它

发布一些代码。没有它,你的问题是不可能回答的。