在 UWP 模板控件中注册 RoutedEventHandler

jch*_*tof 0 xaml template-control routed-events uwp

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

PrimaryButtonClick="ClickEvent"
Run Code Online (Sandbox Code Playgroud)

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

<Button Content="{TemplateBinding PrimaryButtonText}" Click="{TemplateBinding PrimaryButtonClick}"/>
Run Code Online (Sandbox Code Playgroud)

目前,我能找到的只是此类代码的 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);
    }
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*und 5

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

public event EventHandler PrimaryButtonClick;

protected void InnerButton_Click(object sender, EventArgs e)
{
    PrimaryButtonClick?.Invoke( sender, e );              
}
Run Code Online (Sandbox Code Playgroud)

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