更改按钮内的椭圆填充颜色

时间:2015-12-17 15:14:25

标签: c# wpf

我想在启用按钮时将椭圆填充颜色更改为绿色。

   <Button x:Name="btn_Kaart2" Grid.Column="1" Grid.Row="2" IsEnabled="False">
        <Button.Template>
            <ControlTemplate>
                <Ellipse x:Name="ellipse_2" 
                         Height="35"
                         Stroke="Black"
                         Fill="Red"
                         Margin="-300,440,0,0"/>
            </ControlTemplate>
        </Button.Template>
    </Button>

通常我会使用ellipse_2.Fill = "Color",但这不起作用,程序无法找到ellipse_2

1 个答案:

答案 0 :(得分:4)

您可以使用RelativeSource数据绑定来获取此数据而无需任何其他代码

<Button x:Name="btn_Kaart2" Grid.Column="1" Grid.Row="2" IsEnabled="False">
    <Button.Template>
        <ControlTemplate>
            <Ellipse x:Name="ellipse_2" 
                Height="35"
                Margin="-300,440,0,0"
                Stroke="Black">
            <Ellipse.Style>
                <Style TargetType="Ellipse">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding IsEnabled, RelativeSource={RelativeSource AncestorType=Button}}" Value="false">
                            <Setter Property="Fill" Value="red"></Setter>
                        </DataTrigger>
                        <DataTrigger Binding="{Binding IsEnabled, RelativeSource={RelativeSource AncestorType=Button}}" Value="true">
                            <Setter Property="Fill" Value="green"></Setter>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Ellipse.Style>
            </Ellipse>
        </ControlTemplate>
    </Button.Template>
</Button>

Ellipse本身没有Fill属性非常重要。
您可以通过更改* .xaml中的IsEnabled值来尝试此操作,颜色应立即在设计器中更改。