我正在尝试在自定义用户控件中设置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>
我尝试明确地将Text
属性TextBox
分开,最初添加MultiBinding
。如果这不起作用,我注意到只有一个Binding
它没有用。我的意思是:
<Canvas>
<TextBox>
<TextBox.Text>
<Binding Path="CustomControlText" Source="{RelativeSource FindAncestor, AncestorType={x:Type MyCustomControl}}"/>
</TextBox.Text>
</TextBox>
</Canvas>
我认为这应该与前一种情况完全相同,但实际上并没有效果。虽然它编译得很好,但Binding
永远找不到任何价值。为什么两者不同,如何将后者固定为一个有效的表达式?
答案 0 :(得分:3)
在绑定中使用RelativeSource
代替Source
。
<Binding Path="CustomControlText" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type MyCustomControl}}"/>