带有分隔路径的WPF数据绑定,不更新目标



我有一个自定义的WPF用户控件,它有一个依赖属性(下面的片段)。未正确启动其PropertyChangedCallback。

CustomControl:

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}/>

使用工作语法,将调用OnDependencyPropertyChanged事件处理程序,以响应视图模型激发的ViewModelProperty的PropertyChanged。但是,对于第二种语法,OnDependencyPropertyChanged事件处理程序仅在更改ObjectProperty时调用,而不在更改ViewModelProperty时调用。我是否需要进行任何额外的设置以使分隔(.)路径语法正常工作?(具有与TextBox等属性相同的行为。默认情况下,Text具有)

您是否尝试过使用Path属性进行绑定?

<nmspc:CustomControl Value="{Binding Path=ViewModelProperty.ObjectProperty}" />

我记得在用程序构建双向绑定时,Path属性是必需的。

最新更新