0

如何同时使用 aTrigger IsSelected和 a VisualState 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"在 new 中定义 a VisualStateGroup x:Name="SelectedStates"。然后,因为一次控件在每个组中只有一个状态,所以 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>

或者你可以按照克莱门斯的建议去做。请参阅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 回答