0

我不太了解 C# 事件,所以我很难理解在互联网上找到的一些代码

在视图文件后面的代码中有以下方法:

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 的事件处理程序?可能是我在上一个问题中没有使用正确的术语。换句话说,我想在我的视图模型中调用一个方法,而不是在我上面报告的示例中的视图中。

4

1 回答 1

0

您不必在 XAML 中仅使用依赖项属性。您也可以使用普通属性。正如您所指出的,当您使用 DataBinding 时,依赖属性是必需的。在您提到的情况下,似乎不需要使用 DataBinding,因为您不会根据 DataContext 使用不同的处理程序。如果您想坚持 MVVM 模式并将事件处理逻辑保留在您的视图模型中,您可以使用 EventTrigger:http ://www.kunal-chowdhury.com/2010/11/using-eventtrigger-in-xaml-for -mvvm-no.html

于 2013-06-04T13:43:20.157 回答