2017-04-25 5 views
-1

ビューモデルの値に応じて背景色を変更する約50のラベルを表示する必要があります。各ラベルは、異なるビューモデルブール値プロパティに関連付けられています。これを行うための単一のスタイルを作成するにはどうすればいいですか?50個すべてのラベルに関連付けることができるので、すべてのラベルにスタイルを宣言する必要はありません。各ラベルは異なるビューモデルブール値プロパティにバインドされるため、50個のラベルすべてに単一のスタイルおよび/またはデータトリガを適用できる方法はありますか?ビューモデルに応じて背景色を変更する50個のWPFラベルに対して1つのスタイルまたはデータトリガを作成できますかブール値

+0

可能な複製http://stackoverflow.com/questions/3569974/wpf-global-style –

+0

[WPF - グローバルスタイル?]の可能な複製(http://stackoverflow.com/questions/3569974/wpf-global-スタイル) –

+0

私はグローバルスタイルの仕組みをよく知っています。私の具体的な質問:各ラベルは異なるビューモデルブール値プロパティにバインドされるため、50個のラベルすべてに単一のスタイルまたはデータトリガを適用する方法はありますか? – chuckp

答えて

0

グローバルスタイルの仕組みをよく知っています。私の具体的な質問:各ラベルは異なるビューモデルブール値プロパティにバインドされるため、50個のラベルすべてに単一のスタイルまたはデータトリガを適用する方法はありますか?

いいえDataTriggerのバインディングは、プログラムで作成しない限り動的に変更できません。

DataTriggerのバインディングパスを動的に置き換え、残りのスタイルやテンプレートをXAMLで再利用する方法はありません。

+0

ありがとう...私は50種類のラベルに異なるデータトリガを適用する前にこれを行う方法がないことを確認したいだけでした。 – chuckp

-1

私はラベルのカスタムテンプレートを作成し、ラベルの背景を変更するControlTemplateトリガを追加しようとすることができると思います。上記のコード

<Style x:Key="test" TargetType="Label"> 
 
      <Setter Property="BorderThickness" Value="1"></Setter> 
 
      <Setter Property="BorderBrush" Value="Black"></Setter> 
 
      <Setter Property="Template"> 
 
       <Setter.Value> 
 
        <ControlTemplate> 
 
         <TextBlock Text="test"></TextBlock> 
 
         <ControlTemplate.Triggers> 
 
          <DataTrigger Binding="{Binding ColorValue}" Value="12"> 
 
           <Setter Property="Background" Value="Aquamarine"></Setter> 
 
          </DataTrigger> 
 
         </ControlTemplate.Triggers> 
 
        </ControlTemplate> 
 
       </Setter.Value> 
 
      </Setter> 
 
     </Style>

だけ使用状況を表示することで、それは正確な答えではありません。

+1

これは、50個のラベルすべてが同じビューモデルブール値プロパティにバインドされていれば、これはうまくいくと考えています..しかし...各ラベルは、それぞれのブール値プロパティにバインドされています。 – chuckp

+0

完全にあなたの意見に同意する、しかし、私は各viewmodelが同じプロパティ名を持っていると思うが、これはうまくいくはずだ。私はそれを試してみましょう。私はプロパティを持つ基本ビューモデルを持つことができ、それぞれのビューモデルがそのラベルのプロパティを使用しているかどうかを確かめます。もしあなたがそうでなければ私に知らせてください。 –

関連する問題