【问题标题】:Combobox MVVM silverlight messagebox组合框 MVVM silverlight 消息框
【发布时间】:2011-06-14 17:58:17
【问题描述】:

我正在使用 Silverlight MVVM 模型。面对一个小问题:

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

为什么它停留在那个展开的位置以及如何将它带到它的原始位置??

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

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 也作为选定项显示在组合框中。

【问题讨论】:

  • 发布一些代码。没有它,您的问题将无法回答。

标签: silverlight mvvm messagebox


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-04-19
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    相关资源
    最近更新 更多