{Binding #ElementName}是Avalonia中绑定同级或父级已命名控件属性的简洁语法,等价于{Binding PropertyName, ElementName=xxx},要求被引用控件有Name且在同一逻辑树层级,不适用于模板内或未加载控件。

在 Avalonia 中,{Binding #ElementName} 是一种简洁的语法,用于将一个控件的属性绑定到**同级或父级中已命名控件**的某个属性上,不需要额外配置 DataContext 或写冗长的绑定表达式。
绑定到同级命名控件
这是最常用场景:两个控件处于同一容器内,目标控件用 Name 属性命名,源控件直接通过 #名称 引用。
- 被引用的控件必须有
Name(不是x:Name,Avalonia 不支持 x:Name) - 绑定路径写法是
{Binding #xxx.PropertyName},比如{Binding #txtInput.Text} - 顺序无关:被引用控件可以写在绑定控件前面或后面,只要都在同一逻辑树层级下即可
示例:
等价写法与 ElementName 的关系
{Binding #xxx} 是 Avalonia 特有的简写,它和标准 WPF 风格的 {Binding PropertyName, ElementName=xxx} 完全等价。
-
{Binding #txtInput.Text}⇔{Binding Text, ElementName=txtInput} - 前者更短,适合快速原型;后者更显式,利于团队协作或复杂绑定时阅读
- 两者都只查找当前控件所在逻辑树范围内的命名元素,不跨窗口、不跨 UserControl 边界
不能用的情况和常见错误
这个语法看着简单,但容易因作用域理解偏差而失败。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~