2012-04-22 7 views
0

TriggerIsSelectedVisualStateMouseOverを同時に使用するにはどうすればよいですか?要素が選択されていない場合にスタイルを適用することはできません。WPFトリガーとVisualStateは同時にですか?

<ControlTemplate.Triggers> 
        <Trigger Property="IsSelected" Value="True"> 
         ... 
        </Trigger> 
</ControlTemplate.Triggers> 

のでVisualStatesだけでは、次のとおりです:

トリガーは、一人で簡単です

<VisualStateManager.VisualStateGroups> 
    <VisualStateGroup x:Name="CommonStates"> 
     <VisualState x:Name="MouseOver"> 
      <Storyboard> 
       ... 
      </Storyboard> 
     </VisualState> 
    </VisualStateGroup> 
</VisualStateManager.VisualStateGroups> 

しかし、私はこれらをどのように組み合わせるのですか?

答えて

0

VisualState x:Name="Selected"を新しいVisualStateGroup x:Name="SelectedStates"に定義することができます。次に、各グループから1つの状態しか制御できないため、MouseOverとSelectedは互いに独立しています。 Mitesh Sureja's Blogを参照してください。

<VisualStateManager.VisualStateGroups> 
    <VisualStateGroup x:Name="CommonStates"> 
     <VisualState x:Name="MouseOver"> 
      <Storyboard> 
       ... 
      </Storyboard> 
     </VisualState> 
    </VisualStateGroup> 
    <VisualStateGroup x:Name="SelectedStates"> 
     <VisualState x:Name="Selected"> 
      <Storyboard> 
       ... 
      </Storyboard> 
     </VisualState> 
    </VisualStateGroup> 
</VisualStateManager.VisualStateGroups> 

また、クレメンスが提案したようにすることもできます。 Visual State Manager vs. Triggers in WPFを参照してください。

編集

<Style.Triggers> 
    <MultiTrigger> 
     <MultiTrigger.Conditions> 
      <Condition Property="IsSelected" Value="True" /> 
      <Condition Property="IsMouseOver" Value="True" /> 
     </MultiTrigger.Conditions> 
     <Setter ... /> 
    </MultiTrigger> 
</Style.Triggers> 
+0

私は*両方*発生しているスタイルを適用したいので、これは、動作しません。上記のコードは、4つの異なるシナリオ(Over + Selected、Over、Selected、Nothing)に応じて2つの異なるスタイルセットを適用します。私が欲しいのは、2つのシナリオ(Over + Selected、Nothing)だけです。 – Tower

+0

[MultiTrigger](http://msdn.microsoft.com/en-us/library/system.windows.multitrigger.aspx)を試してください。 – LPL

関連する問題