繁体   English   中英

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

[英]Change color of circle button when clicked in WPF

我有此按钮的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>

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

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

  <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,然后从另一个位置进行更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM