2

我坚持将用户控件集成到 mvvm 应用程序中。

用户控件是一个自定义日历,不是使用 MVVM 原则编写的(我不想在 MVVM 中重新编写它)。

我有一个在用户控件中触发的鼠标按下事件(这是三个不同用户控件的组合)。

事件触发代码如下所示:

public static readonly RoutedEvent DateEvent = 
    EventManager.RegisterRoutedEvent("dateEvent", RoutingStrategy.Bubble, 
    typeof(RoutedEventHandler), typeof(UserControl2));

public event RoutedEventHandler dateEvent
{
    add{AddHandler(DateEvent, value);}
    remove{ RemoveHandler(DateEvent, value);}
}

private void UserControl_MouseUp(object sender, MouseButtonEventArgs e)
{
    RaiseEvent(new RoutedEventArgs(UserControl2.DateEvent, this));
}

如何在我的主应用程序视图模型中订阅此路由事件?我知道这不是非常 MVVM,但正如我所说,我不能重写我的用户控件。

我知道这个事件会在树上冒泡,直到它被标记为已处理。我知道添加一个公共 void 方法来处理事件 - 我只是不确定如何首先实现对事件的拦截。

4

1 回答 1

1

我认为您应该阅读本文的 RelayCommand 部分。

WPF MVVM 应用程序

于 2012-08-09T18:57:37.710 回答