在 WPF 中更改 MouseOver 子控件的样式

Change style of a child control on MouseOver in WPF

我有一个包含两个矩形和几个文本框的自定义控件。我想更改 MouseOver 上 Rectangle 的背景颜色。

我添加触发器如下:

  <Rectangle 
            Grid.Column="1" 
            Fill="#FF383838" 
            Grid.ColumnSpan="3" 
            Margin="0,4,4,4">

            <Rectangle.Style>
                <Style TargetType="{x:Type Rectangle}">
                    <Setter Property="Fill" Value="#FF383838" />
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Fill" Value="#FF575757" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Rectangle.Style>

        </Rectangle>

但由于矩形是我控制的一部分,我假设事件没有触发。

通过 XAML 设置 属性 将应用于您尝试设置的样式属性。要解决此问题,请删除 Fill=#FF383838,这样您应该:

<Rectangle Grid.Column="1"
           Grid.ColumnSpan="3"
           Margin="0,4,4,4">
//... rest of code here

试试这个代码:

<Window.Resources>
        <Style TargetType="Rectangle" x:Key="test">
            <Setter Property="Fill" Value="#FF383838" />
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Fill" Value="#FF575757" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <Rectangle Style="{StaticResource test}" />