如何从代码隐藏绑定 属性 而其余的绑定到 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}}"/>
我的目标是将 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}}"/>