WPF/C在UserControl中转发事件和数据提供程序值
我有一个UserControl,它包含4个ToggleButtons,我想触发一个自定义事件,感兴趣的对象可以根据ToggleButton检查值和DataContext对象的值侦听该事件,该事件提供了一个状态 获取ToggleButton的选中值和导出状态非常简单,但是我无法确定如何在C代码隐藏中访问DataContext对象 例如,如果感兴趣的对象从UserControl接收RouteEvent,我希望它能够从UserControl的DataContext对象访问值 我是否需要从DataContext对象公开特定属性,或者我是否可以从UserControl的API公开DataContext对象 使现代化 为了进一步解释这个问题,我有一个项目列表,它在容器中创建了一组UserControl实例,我在每个项目添加到容器时将事件侦听器附加到每个项目,并在单击/检查其子控件时从其中一个UserControl发送一个事件,等等 获取对调度事件的UserControl的引用非常简单,但我无法访问DataContext对象,是否需要分配公共属性以公开DataContext对象 e、 g 还是有更好的办法WPF/C在UserControl中转发事件和数据提供程序值,wpf,user-controls,mvvm,wpf-controls,datacontext,Wpf,User Controls,Mvvm,Wpf Controls,Datacontext,我有一个UserControl,它包含4个ToggleButtons,我想触发一个自定义事件,感兴趣的对象可以根据ToggleButton检查值和DataContext对象的值侦听该事件,该事件提供了一个状态 获取ToggleButton的选中值和导出状态非常简单,但是我无法确定如何在C代码隐藏中访问DataContext对象 例如,如果感兴趣的对象从UserControl接收RouteEvent,我希望它能够从UserControl的DataContext对象访问值 我是否需要从DataCon
任何提示都将不胜感激,谢谢。嗯,看来我应该先尝试一下最简单的解决方案 …当然,我可以像这样访问DataContext对象:
(userControl.DataContext as ControlViewModel).requiredProperty;
使现代化
因此,我最终通过事件/委托对传递DataContext视图模型引用,如下所示
public delegate void StatusChangedHandler(string status, UserControlViewModel model);
public event StatusChangedHandler StatusChanged;
StatusChanged.Invoke("message", DataContext as UserControlViewModel)
// or DataContext as IUserControlModelInterface
然后像这样调用事件
public delegate void StatusChangedHandler(string status, UserControlViewModel model);
public event StatusChangedHandler StatusChanged;
StatusChanged.Invoke("message", DataContext as UserControlViewModel)
// or DataContext as IUserControlModelInterface
这使我能够从UserControl的子控件充分聚合事件,并从事件处理程序访问DataContext模型
我仍然想知道是否有更好的实践方法来做到这一点?你的意思是想将DataContext传递给UserControl吗?当我从UserControl发送事件消息时,我想从它的DataContext对象发送值,或者通过UserControl的API访问值,这是最好的。