鼠标悬停时更改扩展器背景

时间:2016-07-15 09:15:32

标签: wpf xaml

我想在鼠标悬停时将扩展器背景颜色更改为较轻的变体。所以我想我使用触发器和转换器将鼠标悬停的背景颜色转换为较轻的变体。我开始简单,只实现触发器。这有效:

<StackPanel>
    <StackPanel.Resources>
        <Style TargetType="{x:Type Expander}">
            <Style.Triggers>
                <Trigger Property="Control.IsMouseOver" Value="True">
                    <Setter Property="Background" Value="Red"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </StackPanel.Resources>

    <Expander Header="Header">
        <StackPanel>
            <TextBox Background="Transparent">Content</TextBox>
        </StackPanel>
    </Expander>

</StackPanel>

所以我几乎可以达到我的目的。但是我希望能够像这样在扩展器上设置颜色:

<Expander Header="Header" Background="Yellow">

我添加的那一刻,颜色切换停止工作,扩展器总是黄色。为什么会发生这种情况?我如何实现目标?

在我的最终应用程序中

编辑我将有一个带有多个扩展器的itemscontrol,其背景颜色可以数据绑定到我的视图模型,所以我想我无法在样式中设置颜色。

<ItemsControl ItemsSource="{Binding TestStepDescriptions}">
    <ItemsControl.Resources>
        <DataTemplate DataType="{x:Type localVMsTestEngines:AutomaticTestStepDescription}">
            <Expander Background="{Binding StepStatus, Converter={StaticResource StepStatusToColorConverter}}">

的问候, 杰夫

1 个答案:

答案 0 :(得分:1)

如果使用触发器,则无法直接在Expander中设置该颜色。

相反,你必须这样做:

ionicLoading

<强>用法 <ItemsControl ItemsSource="{Binding TestStepDescriptions}"> <ItemsControl.Resources> <DataTemplate DataType="{x:Type localVMsTestEngines:AutomaticTestStepDescription}"> <Expander > <Expander.Style> <Style TargetType="{x:Type Expander}"> <Setter Property="Background" Value="{Binding StepStatus, Converter={StaticResource StepStatusToColorConverter}}"/> <Style.Triggers> <Trigger Property="Control.IsMouseOver" Value="True"> <Setter Property="Background" Value="Red"/> </Trigger> </Style.Triggers> </Style> </Expander.Style> </Expander>