【问题标题】:WPF ControlTemplate - trigger different background color for EllipseWPF ControlTemplate - 为椭圆触发不同的背景颜色
【发布时间】:2025-12-08 06:55:02
【问题描述】:

我正在学习使用 WPF,但遇到了问题。我正在创建一个自定义按钮,当我将鼠标悬停在它上面时应该会改变背景颜色。此时我有以下代码:

<ControlTemplate x:Key="myButtonTemplate" TargetType="{x:Type Button}">
        <Grid>
            <Ellipse x:Name="outerElipse" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
                <Ellipse.Fill>
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="Green" Offset="0"/>
                        <GradientStop Color="Purple" Offset="1"/>
                    </LinearGradientBrush>
                </Ellipse.Fill>
            </Ellipse>
            <Ellipse VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="20">
                <Ellipse.Fill>
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="LightBlue" Offset="0"/>
                        <GradientStop Color="Blue" Offset="1"/>
                    </LinearGradientBrush>
                </Ellipse.Fill>
            </Ellipse>
            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" TextBlock.Foreground="White"/>
        </Grid>
        <ControlTemplate.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Fill" Value="Black"/>
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>

问题是我不知道在第一个(外)椭圆上触发它的热度。 以下行还给出错误“无法识别或无法访问成员“Fill”:

<Setter Property="Fill" Value="Black"/>

【问题讨论】:

    标签: c# wpf templates triggers


    【解决方案1】:

    将外部椭圆的名称分配给 Setter 的 TargetName 属性。

    例如:

    <Setter Property="Fill" Value="Black" TargetName="outerElipse"/>
    

    【讨论】:

      最近更新 更多