为什么以下绑定表达式不相同
本文关键字:表达式 绑定 为什么 | 更新日期: 2023-09-27 18:27:15
我正试图在自定义用户控件内设置TextBox
的文本。以下操作很好:
<Style TargetType="{x:Type MyCustomControl}" >
<Setter Property="Template" >
<Setter.Value>
<ControlTemplate TargetType="{x:Type MyCustomControl}">
<Canvas>
<TextBox Text="{Binding CustomControlText, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type MyCustomControl}}}">
</Canvas>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我试图显式地分离出TextBox
的Text
属性,最初是添加一个MultiBinding
。当这不起作用时,我注意到对于单个Binding
也不起作用。我的意思是:
<Canvas>
<TextBox>
<TextBox.Text>
<Binding Path="CustomControlText" Source="{RelativeSource FindAncestor, AncestorType={x:Type MyCustomControl}}"/>
</TextBox.Text>
</TextBox>
</Canvas>
我认为这应该与前一种情况完全相同,但实际上并不奏效。尽管它编译得很好,但这个Binding
从未找到任何值。为什么两者不同,后者如何固定为一种功能表达?
在绑定中使用RelativeSource
而不是Source
。
<Binding Path="CustomControlText" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type MyCustomControl}}"/>