了解如何在xaml中映射事件

了解如何在xaml中映射事件,xaml,events,binding,Xaml,Events,Binding,我对C#events不太了解,所以在理解一些代码时有困难 在视图文件的代码隐藏中,有以下方法: public void SavingMesBoxClosedHandler(object sender, object args) DisplayMessageBox类派生自FrameworkElement并定义以下事件: public delegate void MessageBoxClosedHandler(object sender, object args); public

我对C#events不太了解,所以在理解一些代码时有困难

在视图文件的代码隐藏中,有以下方法:

public void SavingMesBoxClosedHandler(object sender, object args)
DisplayMessageBox类派生自FrameworkElement并定义以下事件:

    public delegate void MessageBoxClosedHandler(object sender, object args);
    public event MessageBoxClosedHandler DialogClosed;
在视图的xaml中:

 <DisplayMessageBoxDemo:DisplayMessageBox 
       // some dependency properties here
        DialogClosed="SavingMesBoxClosedHandler"/>

我想我只能使用依赖属性,而DialogClosed是一个事件。 在DisplayMessageBox类中,仅使用视图方法的名称将视图方法映射到事件的神奇之处是什么

为什么我不用装订呢

有没有一种简单的方法可以将viewmodel方法指定为DialogClose的事件处理程序?
可能是我在最后一个问题中没有使用正确的术语。换句话说,我想在我的viewmodel中调用一个方法,而不是像我上面报告的例子那样在视图中调用。

您不必在XAML中只使用依赖属性。您也可以使用法线属性。正如您所指出的,当您使用数据绑定时,依赖性属性是必需的。在您提到的情况下,似乎没有必要使用数据绑定,因为您不会根据数据上下文使用不同的处理程序。如果要坚持MVVM模式并在视图模型中保留事件处理逻辑,可以使用EventTrigger:

您应该使用
EventHandler
委托,而不是创建自己的委托。在WPF中,您应该改为使用。是否可以添加具有相同行为的代码示例?