我知道已经有一些像这样的问题,但我似乎无法解决该怎么做,我有一个按钮,我想打开一个新的窗口,有没有办法在纯xaml中做到这一点?我没有看到如何在没有从CodeBehind或ViewModel调用它的情况下打开对话框。我没有使用任何mvvm工具包。
答案 0 :(得分:4)
如果没有从我的CodeBehind或ViewModel调用它,我看不到如何打开对话框。
通常,您在代码中执行此操作 - 但是,大多数MVVM框架提供了一种抽象方法。
这通常通过某种形式的服务位置(即:在ViewModel中注入“ViewService”或类似内容)来处理。另一种选择是使用某种形式的消息传递,这是MVVM Light的方法。
这些方法的优点是可以在不知道View的情况下编写VM - 您正在改变编写代码的方式,以便命令(在ViewModel中)触发某些事件,并且正确的View为你打开。这样可以将View依赖项保留在VM层之外。
答案 1 :(得分:0)
您可以使用<x:Code>
:
<Button Content="OK" Click="Button_Click"/>
<x:Code>
private void Button_Click(object sender,RoutedEventArgs e)
{
MessageBox.Show("Hello");
}
</x:Code>
执行此操作的标准方法是commands。