WPF自定义带图标按钮

本文详细介绍了如何使用XAML实现自定义控件,通过ButtonCursor和Style动态设置按钮的样式,包括透明背景、图片与文字布局,并展示了状态切换的触发效果。对比了两种不同的写法,重点讲解了模板和触发器的运用。
摘要由CSDN通过智能技术生成

控件:

<Button Cursor="Hand" x:Name="btn_Return" Click="btn_Return_Click" Style="{DynamicResource setting}"/>

样式:

<Style x:Key="setting" TargetType="Button">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Grid Background="Transparent">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                        <Image Source="Image/return.png" Stretch="None" VerticalAlignment="Center" Grid.Column="0" Margin="5,0,5,0"/>
                        <TextBlock Text="{TemplateBinding Content}" FontSize="20"  VerticalAlignment="Center" Grid.Column="1" Foreground="Black"/>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsPressed" Value="True">
                            <Setter Property="Background" Value="Green"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

上面的写法等效于下面的:

<Button x:Name="SystemSetting" Cursor="Hand" Click="Button_Click">
                    <Button.Template>
                        <ControlTemplate TargetType="Button">
                            <Grid Background="Transparent">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="*"/>
                                </Grid.ColumnDefinitions>
                                <Image Source="Image/systemsetting.png" Stretch="Uniform" Width="30" VerticalAlignment="Center" Grid.Column="0" Margin="5,0,3,0"/>
                                <TextBlock Text="系统设置" FontSize="20" FontWeight="Bold" VerticalAlignment="Center" Grid.Column="1"/>
                            </Grid>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsPressed" Value="True">
                                    <Setter Property="Background" Value="Green"/>
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Button.Template>
                </Button>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值