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)
但当然类型已经改变了。有人能指出我正确的方向吗?
不幸的是,(冒泡、隧道)的概念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 中尚不可能允许对自定义事件进行冒泡。