2017-12-01 10 views
0

UWP에서 RoutedEventHandler를 등록하는 방법을 찾는 데 어려움이 있습니다. 나는 ContentDialog의 유사 이벤트 속성이있는 템플릿 컨트롤 코드를하려고 해요 : ClickEvent가 CS 파일에 정의되어UWP 템플릿 컨트롤에 RoutedEventHandler 등록

PrimaryButtonClick="ClickEvent" 

. 나는 단지 템플릿의 취급을 받고 있어요,하지만 난이 보이는 뭔가하고 싶은 생각 : 코드의 이러한 종류의 WPF 버전에

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

현재, 내가 찾을 수있는 모든입니다 참조 :

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

불행히도 UWP에서는 RoutedEvent (버블 링, 터널링) 개념을 사용할 수 없습니다. 이벤트의

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

사실, 버블 링. 하지만 더 구체적으로 'RoutedEvent'와 같은 유형이 없음을 의미했습니다. –

+1

RoutedEvent 유형이 없습니다. Ok. 또한 미리 정의 된 UWP UI 이벤트가 어린이에서 부모에게 거품이 생기는 것이 분명하므로 답은 정확하며 해결책으로 표시해야합니다. – SERWare