1

親コントロールからイベント ハンドラーを接続しようとしている UserControl があります。できる限りコードを実行したくないのですが、いくつかの問題が発生しています。これが私のセットアップです:

私が持っているNewUserControlコードの背後にある:

 public RoutedEventHandler PrintClickHandler { get; set; }
 public DependencyProperty PrintClickHandlerProperty = 
     DependencyProperty.Register("PrintClickHandler", typeof(RoutedEventHandler), 
                                 typeof(NewUserControl), new PropertyMetadata(null));

MyParentControl には次のものがあります。

 public RoutedEventHandler PrintClickHandler
 {
    get { return btnPrintCall_Click; }
 }
 private void btnPrintCall_Click(object sender, RoutedEventArgs e)
 {
    // some code
 }

そして最後に、MyParentControls xaml に NewUserControl.PrintClickHandler のバインドがあります。

<NewUserControl PrintClickHandler="{Binding Path=PrintClickHandler, 
    RelativeSource={RelativeSource AncestorType=local:MyParentControl, AncestorLevel=1}}" />

これで、デバッガーですべてのゲッターとセッターを、呼び出されたときにブレークポイントをヒットする従来の方法で実装できます。MyParentControl.PrintClickHandler のゲッターがヒットしているのがわかりますが、NewUserControl.PrintClickHandler のセッターはヒットしません。出力には、このバインディングに関連するエラーや警告もありません。

4

2 に答える 2

1

このようなイベントを試したことはありませんが、依存関係プロパティが正しく設定されていないようです。試してください:

public RoutedEventHandler PrintClickHandler
{
    get { return (RoutedEventHandler)GetValue(PrintClickHandlerProperty); }
    set { SetValue(PrintClickHandlerProperty, value); }
}

public static DependencyProperty PrintClickHandlerProperty = DependencyProperty.Register(
    "PrintClickHandler", 
    typeof(RoutedEventHandler), 
    typeof(NewUserControl), 
    new PropertyMetadata(null));
于 2012-07-25T17:20:19.250 に答える
-1

この質問は間違っています。イベントを扱っているので、依存関係プロパティの使用は不適切です。xaml で適切なイベント ハンドラー メソッドに設定できるパブリック イベント プロパティをコード ビハインドに簡単に追加できます。

于 2012-08-02T15:18:19.140 に答える