2011-10-30 180 views
0

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

+0

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

回答

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

+0

但如果我使用一个命令,那么我将需要在我的ViewModel中创建它,并且由于我需要显示一个新窗口,这将打破MVVM:s –

+4

这仍然是有效的代码 - 它只是将其移入xaml一侧。 .. –

+0

我最后的代码背后,并没有我所希望的那么好,但由于我没有使用MVVM框架,这是最简单的解决方案。 –

3

我没有看到如何打开对话框,而无需从我的CodeBehind或ViewModel调用它。

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

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

这些方法的优点是可以在不知道视图的情况下编写虚拟机 - 您正在改变您编写代码的方式,以便命令(在ViewModel中)触发某个事件,并且正确视图为您打开。这使View层依赖于你的VM层。