Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:WPF MVVM命令绑定与事件回调_C#_Wpf_Xaml_Mvvm - Fatal编程技术网

C#:WPF MVVM命令绑定与事件回调

C#:WPF MVVM命令绑定与事件回调,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,使用MVVM进行文件->退出的关闭操作有什么意义 当您可以简单地为Click事件创建事件回调时,生成close命令似乎需要做很多工作。对于这种与数据或业务逻辑无关的东西,我不认为使用MVVM方法有什么意义。为什么不使用以下方法: xaml: 你们完全正确——若处理程序是纯UI相关的,那个么它不会以任何方式破坏MVVM(尽管一些极端分子这么说)。MVVM是为了将UI和业务逻辑解耦而创建的模式,代码中的“UI东西”是可以的。对于这种情况,您有一点争议。如果没有其他内容,那么关闭视图很容易被理解为完全

使用MVVM进行文件->退出的关闭操作有什么意义

当您可以简单地为Click事件创建事件回调时,生成close命令似乎需要做很多工作。对于这种与数据或业务逻辑无关的东西,我不认为使用MVVM方法有什么意义。为什么不使用以下方法:

xaml:


你们完全正确——若处理程序是纯UI相关的,那个么它不会以任何方式破坏MVVM(尽管一些极端分子这么说)。MVVM是为了将UI和业务逻辑解耦而创建的模式,代码中的“UI东西”是可以的。

对于这种情况,您有一点争议。如果没有其他内容,那么关闭视图很容易被理解为完全与视图相关,因此一个
单击
事件处理程序首先是有意义的。视图相关的代码出现在视图中,而不是VM中

然而,我想质疑你的观点,即
命令
设置起来有那么难。使用
DelegateCommand
:需要两行附加代码:

public ICommand ExitCommand {get; private set;}

public MyViewModel()
{
    ExitCommand = new DelegateCommand(ExitApp);
}
无论哪种方式,处理程序都是相同的。虽然
Exit
可能不需要命令,但一般来说,
ICommand
是正确的方法,实际上并不难

private void Exit_Click(object sender, RoutedEventArgs e)
{
    this.Close();
}
public ICommand ExitCommand {get; private set;}

public MyViewModel()
{
    ExitCommand = new DelegateCommand(ExitApp);
}