来自MVVM应用程序中的用户控件的路由事件

时间:2012-08-09 15:49:29

标签: wpf c#-4.0 wpf-controls

我坚持将用户控件集成到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));
}

如何在主应用程序viewModel中订阅此路由事件?我知道它不是MVVM,但正如我所说,我不能重写我的用户控件。

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

1 个答案:

答案 0 :(得分:1)

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

WPF MVVM Apps