当其余部分绑定到DataContext时,如何从代码后面绑定属性?

时间:2018-06-29 07:00:58

标签: wpf xaml data-binding code-behind

我的目标是将XAML中的元素属性绑定到类背后代码的属性,而DataContext仍然是ViewModel。

原因是,我在XAML中只有一些UI外观属性,这些属性不是由ViewModel控制,而是由后面的代码控制。

所以本质上我搜索这样的东西:

<Element 
    Attribute = "{Binding ThatOneCodeBehind.WhateverProperty}"
    OtherAttribute1 = "{Binding StillDataContextSomething}" 
    OtherAttribute2 = "{Binding StillDataContextSomething}"
/>

Attribute="{Binding ThatOneCodeBehind:WhateverProperty}"的正确绑定语法是什么?

1 个答案:

答案 0 :(得分:3)

您后面的代码在某个UIElement中,假设为Window。因此,为您的元素提供名称后面的代码,并对其进行绑定。当然,应该在此处定义属性CodeBehindProperty

<Window x:Name="_this">
    <TextBox Text="{Binding CodeBehindProperty, ElementName=_this}"/>
</Window>

另一种方法是找到定义类型的祖先:

<TextBox Text="{Binding CodeBehindProperty, RelativeSource={RelativeSource AncestorType=Window}}"/>