2017-02-17 9 views
2

Я хочу динамически менять стиль сетки. Для этой цели давайте предположим, что у меня есть 3 текстовых блока с 3-мя Содержаниеми.XAML Установить ключ ресурса путем привязки

<TextBlock x:Name="Block1" Text="key1" /> 
<TextBlock x:Name="Block2" Text="key2" /> 
<TextBlock x:Name="Block3" Text="key3" /> 

Для каждого из ключей (1,2,3) есть стиль определяется с именем х: Key = «ключ1». Теперь я хочу что-то подобное в моей сетке:

<Grid Style="{DynamicResource {Binding ElementName=Block1, Path=Text}} /> 

Возможно ли это в XAML по умолчанию или я должен найти обходной путь?

+0

Человек, я просто понятия не имею, что вы пытаетесь достичь ... Стиль, определенный для текстового блока, может ориентироваться только на текстовый блок, а один, определенный для сетки, может ориентироваться только на сетку. – Bruno

+2

Вы даже не видите стили, так почему вы говорите о типах? Для Grid есть 3 стиля, и я хочу добавить 1 из них текстом Textblock. – Febertson

+0

@Febertson Как связать с конвертером, который преобразует ключевую строку в стиль (например, загружается из ресурсов)? – Clemens

ответ

0

Возможно ли это по умолчанию XAML или мне нужно найти временное решение?

Нет, я боюсь, что вы не можете использовать расширение разметки StaticResource или DynamicResource с «динамическими» значениями, как это. Ключи ресурсов должны быть известны во время компиляции.

Привязка к свойству и использовать преобразователь будет одним из способов:

<Grid Style="{Binding ElementName=Block1, Path=Text, Converter={StaticResource converter}}"> 

Но я предполагаю, что это временное решение.

+0

Хорошо, спасибо за ответ и фрагмент кода. Я буду отмечать ваш ответ как правильно, потому что он выглядит правильно для меня :) – Febertson