【问题标题】:How to revert selection on combobox with MVVM Light如何使用 MVVM Light 恢复组合框上的选择
【发布时间】:2013-01-17 10:27:56
【问题描述】:

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

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

任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: wpf combobox mvvm-light


    【解决方案1】:

    (未测试)

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

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

    【讨论】:

      【解决方案2】:

      我只是用列表视图浏览了这个

      this link

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-10-19
            • 1970-01-01
            • 2012-11-03
            • 2012-12-16
            • 2012-05-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多