【发布时间】:2011-10-30 16:58:07
【问题描述】:
我知道已经有一些这样的问题,但我似乎不知道该怎么做,我有一个按钮,我想打开一个新窗口,有没有办法在纯 xaml 中做到这一点?如果不从我的 CodeBehind 或 ViewModel 调用它,我看不到如何打开对话框。我没有为此使用任何 mvvm 工具包。
【问题讨论】:
-
新窗口是弹出窗口还是完全独立的非模态窗口?
我知道已经有一些这样的问题,但我似乎不知道该怎么做,我有一个按钮,我想打开一个新窗口,有没有办法在纯 xaml 中做到这一点?如果不从我的 CodeBehind 或 ViewModel 调用它,我看不到如何打开对话框。我没有为此使用任何 mvvm 工具包。
【问题讨论】:
如果不从我的 CodeBehind 或 ViewModel 调用它,我看不出如何打开对话框。
通常,您在代码中执行此操作 - 但是,大多数 MVVM 框架都提供了一种抽象方法。
这通常通过 ViewModel 中的某种形式的服务位置(即:注入“ViewService”或类似的)来处理。另一种选择是使用某种形式的消息传递,这是 MVVM Light 的方法。
这些方法的优点是可以在不了解 View 的情况下编写 VM - 您正在更改编写代码的方式,以便命令(在 ViewModel 中)触发某些事件和正确的 View为你打开。这将 View 依赖项排除在 VM 层之外。
【讨论】:
你可以这样做......
你可以使用<x:Code>:
<Button Content="OK" Click="Button_Click"/>
<x:Code>
private void Button_Click(object sender,RoutedEventArgs e)
{
MessageBox.Show("Hello");
}
</x:Code>
执行此操作的标准方法是commands。
【讨论】: