依存関係プロパティを持つカスタム WPF ユーザー コントロールがあります (以下のスニペット)。PropertyChangedCallback が正しく起動していません。
カスタム コントロール:
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register(
"Value", typeof(float?), typeof(CustomControl),
new UIPropertyMetadata(new PropertyChangedCallback(OnDependencyPropertyChanged)));
public float? Value
{
get { return (float?)GetValue(ValueProperty); }
set { SetValue(ValueProperty, value); }
}
private static void OnDependencyPropertyChanged(object sender, DependencyPropertyChangedEventArgs e)
{
// Do something
}
単純なパスでプロパティにバインドすると、すべて問題ありません。ただし、区切りパス構文を使用すると、必要なときに依存関係プロパティが更新されません。
作業バインディング:
<namespace:CustomControl Value={Binding ViewModelProperty}/>
バインディングが機能していません:
<namespace:CustomControl Value={Binding ViewModelProperty.ObjectProperty}/>
動作中の構文では、ビュー モデルによって起動された ViewModelProperty の PropertyChanged イベントに応答して、OnDependencyPropertyChanged イベント ハンドラーが呼び出されます。ただし、2 番目の構文では、OnDependencyPropertyChanged イベント ハンドラーは ObjectProperty への変更に対してのみ呼び出され、ViewModelProperty への変更に対しては呼び出されません。区切り記号 (.) のパス構文を適切に機能させるために、追加のセットアップを行う必要がありますか? (デフォルトで TextBox.Text などのプロパティと同じ動作をします)