Как связать свойство из-за кода, в то время как остальные связаны с DataContext? - PullRequest
0 голосов
/ 29 июня 2018

Моя цель - связать свойство элемента в XAML со свойством кода, стоящего за классом, тогда как DataContext по-прежнему является ViewModel.

Причина в том, что у меня есть только некоторые UI-косметические свойства в XAML, которые контролируются не ViewModel, а кодом, лежащим в основе.

По сути, я ищу что-то подобное:

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

Каков правильный синтаксис привязки для Attribute="{Binding ThatOneCodeBehind:WhateverProperty}"?

1 Ответ

0 голосов
/ 29 июня 2018

Ваш код находится в каком-то элементе UIElement, скажем, Window. Так что дайте свой элемент с кодом за именем и сделайте привязку к нему. Конечно, свойство CodeBehindProperty должно быть определено там.

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

Другой способ - найти предка с заданным типом:

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