1

我正在使用 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

4 回答 4

1

(未测试)

在 ViewModel 的绑定属性集中,在内部设置值之前调用确认对话框。如果答案是肯定的,则只设置私有值,然后在任何一种情况下引发更改的属性。

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

于 2013-01-22T12:26:18.070 回答
0

我刚刚用列表视图浏览了这个

看到这个链接

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

于 2013-01-26T16:39:20.747 回答
0

ICollectionView是在选择方面最常用的。
MoveCurrentToPrevious()将选择从当前移动到上一个,这就是您要寻找的。所以,将它绑定到你的ComboBox并使用它!有关 MSDN 中的更多信息,希望对您有所帮助。

于 2013-01-26T17:07:12.300 回答
0

我遇到了同样的问题,原因是 UI 线程和投标的工作方式。检查此链接: ComboBox 上的 SelectedItem

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

于 2013-06-14T16:42:32.530 回答