我试图在我编写的自定义控件中通过dependency property
设置绑定,但我发现绑定没有正确更新。我应该注意,我只是绑定 from 该属性。
该属性非常标准,例如:
public bool HasText
{
get => (bool)GetValue(HasTextProperty);
private set => SetValue(HasTextProperty, value);
}
public static readonly DependencyProperty HasTextProperty = DependencyProperty.Register(
nameof(HasText), typeof(bool), typeof(TextEditor), new PropertyMetadata(false));
现在,我首先尝试使用已编译的绑定,但该绑定失败了(它没有显示任何错误,但是它没有用):
<controls:TextEditor x:Name="SomeTextEditor"/>
<controls:SomeControl IsEnabled="{x:Bind SomeTextEditor.HasText, Mode=OneWay}"/>
然后,我尝试使用经典绑定,并且效果很好:
<controls:TextEditor x:Name="SomeTextEditor"/>
<controls:SomeControl IsEnabled="{Binding ElementName=SomeTextEditor, Path=HasText}"/>
现在,我不得不说我不确定为什么会这样。 dependency property
内置了对通知的支持,否则经典绑定也不起作用。而且我没有忘记x:Bind
的默认值为Mode=OneTime
,但是即使在手动将其设置为Mode=OneWay
之后,它仍然无法正常工作。
有什么想法吗?我很可能会在这里遗漏一些明显的东西。
谢谢!