我坚持将用户控件集成到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方法来处理事件 - 我只是不确定如何首先实现对事件的拦截。