0

Trigger IsSelectedVisualState MouseOverを同時に使用するにはどうすればよいですか?要素が選択されておらず、ホバーされている場合、スタイルを適用したくありません。

トリガーだけでも簡単です。

<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>

しかし、どうすればこれらを組み合わせることができますか?

4

1 に答える 1

0

VisualState x:Name="Selected"新しい で aを定義できますVisualStateGroup x:Name="SelectedStates"。次に、一度にコントロールは各グループから 1 つの状態しか持たないため、MouseOver と Selected は互いに独立しています。Mitesh Sureja のブログを参照してください。

<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 と WPF のトリガーを参照してください。

編集

<Style.Triggers>
    <MultiTrigger>
        <MultiTrigger.Conditions>
            <Condition Property="IsSelected" Value="True" />
            <Condition Property="IsMouseOver" Value="True" />
        </MultiTrigger.Conditions>
        <Setter ... />
    </MultiTrigger>
</Style.Triggers>
于 2012-04-22T17:44:45.950 に答える