【问题标题】:Open View on button click MVVM打开按钮单击 MVVM 上的视图
【发布时间】:2011-10-30 16:58:07
【问题描述】:

我知道已经有一些这样的问题,但我似乎不知道该怎么做,我有一个按钮,我想打开一个新窗口,有没有办法在纯 xaml 中做到这一点?如果不从我的 CodeBehind 或 ViewModel 调用它,我看不到如何打开对话框。我没有为此使用任何 mvvm 工具包。

【问题讨论】:

  • 新窗口是弹出窗口还是完全独立的非模态窗口?

标签: c# wpf xaml mvvm command


【解决方案1】:

如果不从我的 CodeBehind 或 ViewModel 调用它,我看不出如何打开对话框。

通常,您在代码中执行此操作 - 但是,大多数 MVVM 框架都提供了一种抽象方法。

这通常通过 ViewModel 中的某种形式的服务位置(即:注入“ViewService”或类似的)来处理。另一种选择是使用某种形式的消息传递,这是 MVVM Light 的方法。

这些方法的优点是可以在不了解 View 的情况下编写 VM - 您正在更改编写代码的方式,以便命令(在 ViewModel 中)触发某些事件和正确的 View为你打开。这将 View 依赖项排除在 VM 层之外。

【讨论】:

    【解决方案2】:

    你可以这样做......

    你可以使用<x:Code>:

    <Button Content="OK" Click="Button_Click"/>
    <x:Code>
      private void Button_Click(object sender,RoutedEventArgs e)
      {
        MessageBox.Show("Hello");
      }
    </x:Code>
    

    执行此操作的标准方法是commands

    【讨论】:

    • 但是如果我使用一个命令,那么我需要在我的 ViewModel 中创建它,因为我需要显示一个新窗口,这会破坏 MVVM :s
    • 我最终选择了后面的代码,没有我想要的那么好,但由于我没有使用 MVVM 框架,这是最简单的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-17
    相关资源
    最近更新 更多