2017-02-17 4 views
2

グリッドのスタイルを動的に変更したいと考えています。この目的のために、3つのコンテンツが定義された3つのTextblockがあるとしましょう。XAMLバインディングでリソースキーを設定する

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

各キー(1,2,3)には、名前x:Key = "key1"で定義されたスタイルがあります。

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

は、デフォルトのXAMLで、このことは可能ですか私は回避策を見つける必要がありません: は今、私は私のグリッドにこのような何かをしたいですか?

+0

あなたは習得しようとしていません...テキストブロック用に定義されたスタイルは、テキストブロックのみを対象とし、グリッド用に定義されたスタイルはグリッドを対象とすることができます。 – Bruno

+2

あなたはスタイルを見ていないので、なぜタイプについて話していますか?グリッド用に3つのスタイルが定義されており、そのうち1つをテキストブロックのテキストで付けたいと思っています。 – Febertson

+0

@Febertsonキーストリングをスタイルに変換するコンバーターを使用したバインディング(リソースからロードなど)はどうですか? – Clemens

答えて

0

これはデフォルトXAMLで可能ですか、回避策を見つける必要はありますか?

いいえ、私はあなたがこのような「ダイナミック」の値を持つStaticResourceまたはDynamicResourceマークアップ拡張機能を使用することはできません怖いです。リソースのキーはコンパイル時に知っている必要があります。プロパティにバインドし、一つの方法だろうコンバータを使用

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

しかし、私はそれが回避策だと思います。

+0

答えとコードスニペットをありがとう。私はあなたの答えを正しいものとしてマークします。なぜなら、それは私の右に見えるからです:) – Febertson

関連する問題