1

これは、ユーザー コントロールの背後にあるコードです。

 public delegate void YardSelectionChangedDelegate();
 public event YardSelectionChangedDelegate YardSelectionChanged;
 public static readonly DependencyProperty SelectedYardIdProperty =
     DependencyProperty.Register(
         "SelectedYardId",
         typeof(long),
         typeof(YardSelectorUserControl),
         new UIPropertyMetadata(null));

そして、これはプロパティです:

public long SelectedYardId
{
    get { return (long)GetValue(SelectedYardIdProperty); }
    set { SetValue(SelectedYardIdProperty, value); }
}

そして、これは親ウィンドウの Binding です:

SelectedYardId="{Binding  Path=YardId,UpdateSourceTrigger=PropertyChanged}" 

問題は、プロパティの Set が機能せず、カーソルが Set 本体に到達しないことです。本当にありがとう。

4

2 に答える 2

3

これは、バインディング エンジンがプロパティの設定または取得に set または get アクセサーを使用しないためです。DependencyObject の SetValue と GetValue を直接使用します。依存関係プロパティの変更中にイベントをトリガーするには、次のように依存関係プロパティの登録中にコールバック デリゲートを定義する必要があります。

public static readonly DependencyProperty SelectedYardIdProperty =
    DependencyProperty.Register(
        "SelectedYardId",
        typeof(long),
        typeof(YardSelectorUserControl),
        new UIPropertyMetadata(OnSelectedYardIdChanged));

public static void OnSelectedYardIdChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
     // Action 
}
于 2012-11-21T10:13:36.377 に答える