如何从代码隐藏绑定 属性 而其余的绑定到 DataContext?

How to bind a property from code-behind while the rest are bound to DataContext?

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

原因是,我在 XAML 中只有一些 UI 修饰属性,它们不受 ViewModel 控制,而是由后面的代码控制。

基本上我搜索的是这样的东西:

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

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

你的代码隐藏在一些 UIElement 中,比方说 Window。因此,为您的元素提供名称背后的代码并绑定到它。当然 属性 CodeBehindProperty 应该在那里定义。

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

另一种方法是查找具有定义类型的祖先:

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