Wpf MVVM应用程序中来自用户控件的路由事件
我一直坚持将用户控件集成到mvvm应用程序中 用户控件是一个自定义日历,没有使用MVVM原则编写(我不想在MVVM中重新编写) 我在用户控件中触发了一个鼠标按下事件(这是三个不同用户控件的组合) 触发事件的代码如下所示:Wpf MVVM应用程序中来自用户控件的路由事件,wpf,c#-4.0,wpf-controls,Wpf,C# 4.0,Wpf Controls,我一直坚持将用户控件集成到mvvm应用程序中 用户控件是一个自定义日历,没有使用MVVM原则编写(我不想在MVVM中重新编写) 我在用户控件中触发了一个鼠标按下事件(这是三个不同用户控件的组合) 触发事件的代码如下所示: public static readonly RoutedEvent DateEvent = EventManager.RegisterRoutedEvent("dateEvent", RoutingStrategy.Bubble, typeof(Route
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,但正如我所说的,我不能重新编写我的用户控件
我知道这个事件会在树上冒泡,直到它被标记为已处理。我知道要添加一个public void方法来处理该事件-我只是不确定首先如何实现对该事件的拦截。我认为您应该阅读本节的RelayCommand部分
说清楚,我不建议您重新编写控件,而是建议您使用传入的命令绑定事件。好的,谢谢。听起来我需要调查一下。我现在已经解决了这个问题(以一种非常非MVVM的方式),所以现在就可以了-我真的应该用MVVM风格重新做用户控制!!我提出的解决方案导致视图和viewModel之间存在大量依赖关系