如何在caliburn micro中使用带有自定义路由事件的用户控件传递参数
本文关键字:事件 路由 用户 控件 参数 自定义 caliburn micro | 更新日期: 2023-09-27 18:04:46
我有一个带有自定义路由事件的用户控件:
public partial class DummyControl : UserControl
{
public static readonly RoutedEvent ActionClickEvent = EventManager.RegisterRoutedEvent(
"ActionClick",
RoutingStrategy.Bubble,
typeof(RoutedEventHandler),
typeof(DummyControl));
public event RoutedEventHandler ActionClick
{
add { this.AddHandler(ActionClickEvent, value); }
remove { this.RemoveHandler(ActionClickEvent, value); }
}
public DummyControl()
{
this.InitializeComponent();
}
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
this.RaiseEvent(new RoutedEventArgs(ActionClickEvent,this));
}
}
在我的xaml中,我使用一个数据网格,我想把selecteditem传递给我的ViewModel。但是当事件被触发时,传递的项总是空的。当你在一个按钮上尝试同样的东西时,一切都很好。
<Cstm:DummyControl cal:Message.Attach="[Event ActionClick] = [Action Test(dataGrid.SelectedItem)]"/>
不知道这是一个已知的错误还是我错过了什么。: '
不行!这是一个bug。我报告了这个问题,它将在下一个主要版本中得到解决:
https://github.com/Caliburn-Micro/Caliburn.Micro/issues/363calburn。Micro在事件定义中不支持自定义路由事件。查看此浏览器以使其与自定义路由事件https://stackoverflow.com/a/8471269/6346570一起工作。
此外,您必须使用名称空间和所有者类的全名来引用xaml中的事件。应该是Cstm:DummyControl.ActionClick