如何在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)]"/>

不知道这是一个已知的错误还是我错过了什么。: '

如何在caliburn micro中使用带有自定义路由事件的用户控件传递参数

不行!这是一个bug。我报告了这个问题,它将在下一个主要版本中得到解决:

https://github.com/Caliburn-Micro/Caliburn.Micro/issues/363

calburn。Micro在事件定义中不支持自定义路由事件。查看此浏览器以使其与自定义路由事件https://stackoverflow.com/a/8471269/6346570一起工作。

此外,您必须使用名称空间和所有者类的全名来引用xaml中的事件。应该是Cstm:DummyControl.ActionClick