首页 > 解决方案 > WPF ControlTemplate - 为椭圆触发不同的背景颜色

问题描述

我正在学习使用 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>

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

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

标签: c#wpftemplatestriggers

解决方案


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

前任:

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

推荐阅读