如何使用MVVM Light恢复对组合框的选择

时间:2013-01-17 10:27:57

标签: wpf combobox mvvm-light

我正在使用WPF和MVVM Light框架。

我想知道如何在组合框上恢复选择。

例如:

  • 默认选择为“文字1”
  • 当用户在组合框中选择“文本2”时,我会显示一个对话框(是/否)以确认操作
  • 如果用户点击“否”,我想将该值恢复为“文本1”

到目前为止,我的xaml是这样的:

ComboBox ItemsSource="{Binding SourceData}" SelectedItem="{Binding SelectedSourceData,Mode=TwoWay}"

我的绑定SourceData在我的MainViewModel.cs中定义为:

public ObservableCollection<TextItem> SourceData { get; set; }

我的组合框没有名称。有没有办法使用绑定方法还原选择?

非常感谢任何帮助。

感谢。

4 个答案:

答案 0 :(得分:1)

(未经测试)

在ViewModel的绑定属性集中,在内部设置值之前调用Confirm Dialog。只有在答案为是时才设置私有值,然后在两种情况下都提高属性。

这仍然是可测试的(如果您有确认对话框的可模拟界面)。

答案 1 :(得分:0)

我刚刚通过列表视图

进行了讨论

请参阅this link

您必须使用eventtocommand绑定到组合框的selecteditemchanged事件上的中继命令。选择将更改,但您可以验证您的逻辑并在需要时将其更改回来

答案 2 :(得分:0)

ICollectionView是选择中最常用的。
MoveCurrentToPrevious()将选择从当前移动到前一个,这就是您要查找的内容。所以,将它绑定到您的ComboBox并使用它! for more info in MSDN希望它有所帮助。

答案 3 :(得分:0)

我有同样的问题,由UI线程引起的原因和出价的方式。检查此链接: SelectedItem on ComboBox

示例中的结构使用了代码,但MVVM完全相同。