WPF按钮相关

跟着官网敲的按钮相关的内容,还涉及了wpf很多其他的知识

1.创建基本按钮

复制代码
    <Grid>
        <StackPanel HorizontalAlignment="Left">
            <Button>Button1</Button>
            <Button>Button2</Button>
            <Button>Button3</Button>
        </StackPanel>
    </Grid>

2.设置基本属性

有两种方式,直接在button后面添加 ,但是我这里有三个按钮,你在项目之中会有出现更多按钮的情况,所以我们这了选择另一种方式:写按钮的样式style

这里在App.xaml下面进行创建style,即表示把这个style应用到全局:

复制代码
        <!--创建样式-->
        <Style TargetType="Button">
            <Setter Property="Width" Value="90"></Setter>
            <Setter Property="Margin" Value="10"></Setter>
        </Style>

这里的TargetType表示目标对象即button,下面的setter是设计器,property是button拥有的属性,value是我们设置的值.

  1. 设置渐变静态资源并运用到按钮上面

x:Key = "B1" 是上面资源的命名,下面引用的是{StaticResource B1}

复制代码
        <LinearGradientBrush x:Key="B1" StartPoint="0,0" EndPoint="1,1">
            <GradientStop Color="DarkGray" Offset="0"></GradientStop>
            <GradientStop Color="#CCCCFF" Offset="0.5"></GradientStop>
            <GradientStop Color="DarkGray" Offset="1"></GradientStop>
        </LinearGradientBrush>

        <Style TargetType="{x:Type Button}">
            <Setter Property="Background" Value="{StaticResource B1}"></Setter>
            <Setter Property="Width" Value="80"></Setter>
            <Setter Property="Margin" Value="10"></Setter>
        </Style>

4.模板自定义按钮外观

更改按钮呈现:自 定义模板。 添加以下突出显示的标记。 此标记指定两个具有圆角的 Rectangle 元素,后跟一个 DockPanelDockPanel 用于托管按钮的 ContentPresenterContentPresenter 显示按钮的内容。 在本演练中,内容为文本("Button 1"、"Button 2"、"Button 3")。 所有模板组件(矩形和 DockPanel)都布置在 Grid 内.

复制代码
 <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <!--
                        使用了Grid布局容器来组织按钮的内部元素。
                        Width和Height属性被绑定到模板自身的宽度和高度,确保Grid的大小与按钮的大小相匹配。
                        ClipToBounds设置为True,意味着任何超出Grid边界的内容都会被裁剪。
                        -->
                        <Grid Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" ClipToBounds="True">
                            <!-- Outer Rectangle with rounded corners. -->
                            <Rectangle x:Name="outerRectangle" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Stroke="{TemplateBinding Background}" RadiusX="20" RadiusY="20" StrokeThickness="5" Fill="Transparent" />
                            <!-- Inner Rectangle with rounded corners. -->
                            <Rectangle x:Name="innerRectangle" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Stroke="Transparent" StrokeThickness="20" Fill="{TemplateBinding Background}" RadiusX="20" RadiusY="20" />
                            <!-- Present Content (text) of the button. -->
                            <DockPanel Name="myContentPresenterDockPanel">
                                <ContentPresenter x:Name="myContentPresenter" Margin="20" Content="{TemplateBinding  Content}" TextBlock.Foreground="Black" />
                            </DockPanel>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>

5.设置触发器

复制代码
<ControlTemplate.Triggers>

                            <!-- Set properties when mouse pointer is over the button. -->
                            <Trigger Property="IsMouseOver" Value="True">

                                <!-- Below are three property settings that occur when the
         condition is met (user mouses over button).  -->
                                <!-- Change the color of the outer rectangle when user          mouses over it. -->
                                <Setter Property ="Rectangle.Stroke" TargetName="outerRectangle"
      Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />

                                <!-- Sets the glass opacity to 1, therefore, the          glass "appears" when user mouses over it. -->
                                <Setter Property="Rectangle.Opacity" Value="1"       TargetName="glassCube" />

                                <!-- Makes the text slightly blurry as though you were          looking at it through blurry glass. -->
                                <Setter Property="ContentPresenter.BitmapEffect"       TargetName="myContentPresenter">
                                    <Setter.Value>
                                        <BlurBitmapEffect Radius="1" />
                                    </Setter.Value>
                                </Setter>
                            </Trigger>
                            <!-- Set properties when button has focus. -->
                            <Trigger Property="IsFocused" Value="true">
                                <Setter Property="Rectangle.Opacity" Value="1"       TargetName="glassCube" />
                                <Setter Property="Rectangle.Stroke" TargetName="outerRectangle"       Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
                                <Setter Property="Rectangle.Opacity" Value="1" TargetName="glassCube" />
                            </Trigger>

                        </ControlTemplate.Triggers>
相关推荐
一段佳话^cyx1 小时前
详解逻辑回归(Logistic Regression):原理、推导、实现与实战
大数据·算法·机器学习·逻辑回归
zhou lily2 小时前
SaaS模式下的企业服务创新与数字化转型:战略重构与价值落地
大数据
qq_452396232 小时前
【Python × AI】多智能体协作:从 AutoGPT 到 CrewAI 的组织进化论
大数据·人工智能·python·ai
跨境卫士-小汪4 小时前
高风险订单识别不足如何设置拦截与二次核验
大数据·人工智能·产品运营·跨境电商·营销策略
贾斯汀玛尔斯4 小时前
kinbana中无法在discover中显示在ES中创建的索引--解决方案
大数据·elasticsearch·搜索引擎
RFID科技的魅力6 小时前
零门槛上手!CP300R触屏RFID打印机操作体验与打印效果实测
大数据·物联网·rfid
数字供应链安全产品选型6 小时前
#AI原生安全,Gartner 点名之后:AIST 技术正在进入深水区
大数据·人工智能
NOCSAH7 小时前
统好AI数智平台SRM:重塑采购管理新范式
大数据·人工智能·数智化一体平台·统好ai
帐篷Li7 小时前
【AgenticCPS 】CPS联盟返利系统 - 实施计划
大数据·网络·人工智能
CDA数据分析师干货分享7 小时前
汉江师范学院数据科学与大数据技术专业大二学生:CDA一级学习经验
大数据·经验分享·学习·数据分析·cda证书·cda数据分析师