2017-08-31 80 views
0

myWindowの内部にあるmyUserControlからPreviewKeyDownイベントを伝達するにはどうすればよいですか? myUserContorl.xaml.csでmyWindow.xamlでWPFのUserControlにイベントをバインドする

<local:MyFilter x:Name="check" MyEvent="submit" /> 

myUserContorl.xaml

<ComboBox x:Name="combo" PreviewKeyDown="{Binding Path=MyEvent}" /> 

では

#region MyEvent 

    /// <summary> 
    /// Gets or sets the Label which is displayed next to the field 
    /// </summary> 
    public EventHandler MyEvent 
    { 
     get { return (EventHandler)GetValue(EventHandlerProperty); } 
     set { SetValue(EventHandlerProperty, value); } 
    } 

    /// <summary> 
    /// Identified the Label dependency property 
    /// </summary> 
    public static readonly DependencyProperty EventHandlerProperty = 
     DependencyProperty.Register("MyEvent", typeof(EventHandler), 
      typeof(myUserControl), new PropertyMetadata("")); 

    #endregion 

これは単に '文字列フィールド' のような内容のために働きますかテキスト...イベントでは機能しません。

答えて

1

ただ根本的なコントロールにイベントハンドラを追加(または削除):

public event KeyEventHandler MyEvent 
{ 
    add { combo.AddHandler(PreviewKeyDownEvent, value); } 
    remove { combo.RemoveHandler(PreviewKeyDownEvent, value); } 
} 

任意のXAMLに結合することなく:

<ComboBox x:Name="combo" /> 
+0

ありがとう。しかし、 はどのように私はmywindowの からMyEventを渡すことができます '<ローカル:mywindowのX:名= "チェック" MyEvent = "提出"/>' 'ます。private void(オブジェクト送信者、KeyEventArgs e)の { を提出.. .. } ' – user652644

+0

あなたは既に持っていますが、RoutedEventHandlerをKeyEventHandlerに変更してください。 – Clemens

+0

うわー...やっぱり...それは働いた – user652644

関連する問題