2014-05-30 3 views
1

У кого-то возникла ситуация, чтобы связать одно и то же свойство DataContext с текстом (например) в TextBlock.WPF Binding - Self Binding со своим собственным DataContext

Я должен назначить DataContext, чтобы отразить некоторый триггер, основанный на значениях данных из Datacontext в моем стиле. в то же время мне нужно связать с тем же объектом DataContext, чтобы получить текстовое свойство. После применения какого-либо преобразования на IValueConverter/IMultivalueConverter.

Как я знаю {Binding}, просто связывайтесь с текущим текстом данных. Но в том же сценарии, как использовать конвертер с ним? Любые предложения будут оценены.

<TextBlock Style="{StaticResource DataEntryTextBlock1}" Grid.Row="1" 
       DataContext="{Binding MyField1}" 
       Text="{Binding MyField1, Converter={StaticResource myConverter}}"> 
    </TextBlock> 

Этот XAML скрипт не работает, так как текст привязки пытается искать переменную MyField1 внутри MyField1.

Спасибо, Vinodh

+0

DataContext = "{Binding MyField1}" подразумевает, что вы уже установили DataContext для более высокого элемента. Например, если вы устанавливаете контекст на , он известен дочерним элементам без необходимости указывать его снова в каждом из них. – bdimag

ответ

3

{Binding} эквивалентно {Binding Path=.} так в вас случае вы можете использовать

Text="{Binding Path=., Converter={StaticResource myConverter}}" 

Binding.Path на MSDN

Необязательно, точка (.) Путь может быть используется для привязки к текущему источнику. Например, Text = "{Binding}" эквивалентен Text = "{Binding Path =.}"