2017-12-01 14 views
0

UWPでRoutedEventHandlerを登録する方法を見つけるのが難しいです。 ClickEventがCSファイルで定義されているUWPテンプレートコントロールでRoutedEventHandlerを登録する

PrimaryButtonClick="ClickEvent" 

:私はContentDialogのようなイベントの性質を有するテンプレートコントロールをコーディングしようとしています。私はちょうどテンプレートのこつを取得していますが、私はこのようになります何かをしたいと考えている:

<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); 
    } 

もちろん、種類が変更されています。誰かが私を正しい方向に向けることができますか?

答えて

3

残念ながら、RoutedEvent(バブリング、トンネリング)という概念は現在UWPでは利用できません。あなただけが代わりに古典的なイベントを作成することができます。イベントの

public event EventHandler PrimaryButtonClick; 

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

バブルは、いくつかの定義済みイベントのために可能であるが、UWPの現在のバージョンでカスタムイベントのバブリングできるように、まだ不可能です。

+1

ルーテッドイベントはUWPに存在します。しかし今のところ、WPFほど完全ではありません。たとえば、バブリングは利用できますが、トンネリングは利用できません。https://docs.microsoft.com/en-us/windows/uwp/xaml-platform/events-and-routed-events-overview – SERWare

+0

True、それは泡立つ。しかし、より具体的には、「RoutedEvent」のような型がないことを意味しました。 –

+1

RoutedEvent型はありません。また、あらかじめ定義されたUWP UIイベントが子供から親に吹き飛ばされることを明確にすると、あなたの答えは正しいので、解決策としてマークする必要があります。 – SERWare

関連する問題