c# - 为什么编译绑定不能与依赖属性一起使用,但经典绑定可以?
问题描述
我试图dependency property
在我编写的自定义控件中设置绑定,但我注意到绑定没有正确更新。我应该注意,我只是从属性绑定。
该属性是非常标准的,如下所示:
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}"/>
现在,我不得不说我不确定为什么会这样。Adependency property
内置了对通知的支持,否则经典绑定也不起作用。而且我没有忘记x:Bind
默认设置为Mode=OneTime
,但即使手动将其设置为Mode=OneWay
它仍然无法正常工作。
有任何想法吗?我很可能在这里遗漏了一些明显的东西。
谢谢!
解决方案
推荐阅读
- python - 按给定条件提取 numpy 行
- json - 无法在 Yii2 api 中返回 json 响应
- java - 如何将输入作为字符串转换为存储在单独类中的整数?
- css - 滑块行高 CSS
- javascript - nodejs的io中的io.sockets.adapter.rooms在哪里?
- python - 简单的python脚本,多线程?
- node.js - Hyperledger Fabric v2.1:网关连接选项中 asLocalhost 设置为 false 的 Fabcar
- sql - 将日期时间与另一个表 date_time 进行比较
- node.js - 如何在猫鼬的集合中找到文档项的平均值?
- python - CSS 静态文件在 Django 中不起作用,我是 Django 的初学者,main.css 属性没有应用于我的 store.html