0

xaml に 4 つの境界要素があります。ビューモデルには、state1、state2、state3、state4 の状態オブジェクトがあります。州に基づいて、特定の背景で境界線を描く必要があります。たとえば、状態が state1 の場合、border1 の背景は白、残りはグレーにする必要があります。私の州がstate2の場合、border2は白で、残りは灰色である必要があります。

この目的のために 2 つのスタイルを定義しました。1 つは背景を白で、もう 1 つは灰色でペイントします。質問は、バインディングを指定してスタイルを選択するにはどうすればよいですか? Border要素で利用できるスタイルセレクターと呼ばれるものはありますか? または、この問題を解決するにはどうすればよいですか?

サンプルコード:

  <Border Style="{StaticResource HighlightedTileStyle}" Grid.Column="0"/>
  <Border Style="{StaticResource NonHighlightedTileStyle}" Grid.Column="1"/>
  <Border Style="{StaticResource NonHighlightedTileStyle}" Grid.Column="2"/>
  <Border Style="{StaticResource NonHighlightedTileStyle}" Grid.Column="3"/>

<Style x:Key="HighlightedTileStyle" TargetType="{x:Type Border}">
 <Setter Property="Background" Value="White"/>
 </Style>

<Style x:Key="NonHighlightedTileStyle" TargetType="{x:Type Border}">
 <Setter Property="Background" Value="Gray"/>
 </Style>

IState と呼ばれる状態オブジェクトを持つビューモデルがあることに注意してください。これは、State1、State2、State3、および State4 の型にすることができます。

.NET 3.5 の使用

ありがとう -マイク

4

2 に答える 2

2

DataTriggerこれには、Style.Triggersコレクション内のいくつかの を使用できます。

<Style x:Key="BorderStyle" TargetType="{x:Type Border}">
    <Setter Property="Background" Value="Gray"/>
    <Style.Triggers>
        <DataTrigger Binding="{Binding State}" Value="1">
            <Setter Property="Background" Value="White" />
        </DataTrigger>
        ...
        <DataTrigger Binding="{Binding State}" Value="4">
            <Setter Property="Background" Value="Green" />
        </DataTrigger>
    </Style.Triggers>
</Style>

もちろん、これは、プロパティを含むオブジェクトのタイプに対してBorderが使用されていることを前提としています。は、このコードがプロパティにアクセスできることを前提としています。DataTemplateStateState

于 2013-11-06T15:41:12.653 に答える
0

これを達成するためにトリガーを利用できると思います。詳細については、以下のリンクを参照してください 。 http://msdn.microsoft.com/en-us/library/system.windows.trigger(v=vs.110).aspx

于 2013-11-06T15:39:13.443 に答える