0

我很难找到如何在 UWP 中注册 RoutedEventHandler。我正在尝试编写具有类似于 ContentDialog 的事件属性的模板控件:

PrimaryButtonClick="ClickEvent"

其中 ClickEvent 是在 cs 文件中定义的。我只是掌握了模板的窍门,但我相信我想做一些看起来像这样的事情:

<Button Content="{TemplateBinding PrimaryButtonText}" Click="{TemplateBinding PrimaryButtonClick}"/>

目前,我能找到的只是对此类代码的 WPF 版本的引用:

 public static readonly RoutedEvent ValueChangedEvent =
        EventManager.RegisterRoutedEvent("ValueChanged",
RoutingStrategy.Direct, typeof(RoutedPropertyChangedEventHandler<double>),
typeof(NumericBox));

    public event RoutedPropertyChangedEventHandler<double> ValueChanged
    {
        add { AddHandler(ValueChangedEvent, value); }
        remove { RemoveHandler(ValueChangedEvent, value); }
    }

    private void OnValueChanged(double oldValue, double newValue)
    {
        RoutedPropertyChangedEventArgs<double> args =
    new RoutedPropertyChangedEventArgs<double>(oldValue, newValue);
        args.RoutedEvent = NumericBox.ValueChangedEvent;
        RaiseEvent(args);
    }

但是当然类型已经改变了。有人可以指出我正确的方向吗?

4

1 回答 1

4

不幸的是,RoutedEvent(冒泡,隧道)的概念目前在 UWP 中不可用。但是,您可以只创建一个经典事件:

public event EventHandler PrimaryButtonClick;

protected void InnerButton_Click(object sender, EventArgs e)
{
    PrimaryButtonClick?.Invoke( sender, e );              
}

对于某些预定义的事件,可以对事件进行冒泡,但在当前版本的 UWP 中还不能允许对自定义事件进行冒泡。

于 2017-12-02T11:44:01.873 回答