在WPF中单击时更改圆圈按钮的颜色

时间:2018-07-26 07:18:29

标签: c# wpf xaml events button

我有此按钮的XAML代码。我需要将此按钮设置为纯色圆圈。

<Button x:Name="btn_Color" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center" Height="25" Width="25" BorderBrush="Black">
    <Button.Template>
        <ControlTemplate TargetType="Button">
            <Grid>
                <Ellipse Fill="Black"/>
            </Grid>
        </ControlTemplate>
    </Button.Template>
</Button>

我希望此按钮在单击时可以更改颜色,并能够将此代码重用于其他按钮。我将在以后将颜色用于其他用途,因此我需要能够访问该数据。 我试图向Ellipse添加一个PreviewMouseDown事件并更改(Ellipse)sender上的属性,但是即使我将其添加为x:Name属性也无法访问Ellipse的颜色。我该如何实现?谢谢! :)

1 个答案:

答案 0 :(得分:0)

您可以使用此代码实现所需的功能。这至少是一个起点:

  <Button x:Name="btn_Color" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center" Height="25" Width="25">
        <Button.Style>
            <Style TargetType="Button">
                <Setter Property="BorderBrush" Value="Black"/>
                <Style.Triggers>
                    <Trigger Property="IsPressed" Value="True">
                        <Setter Property="BorderBrush" Value="Green"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
        <Button.Template>
            <ControlTemplate TargetType="Button">
                <Grid>
                    <Ellipse Fill="{Binding BorderBrush, RelativeSource={RelativeSource AncestorType=Button}}"/>
                </Grid>
            </ControlTemplate>
        </Button.Template>
    </Button>

以这种方式进行操作,然后可以将BorderBrush绑定为其他颜色或DependencyProperty,然后从另一个位置进行更改。