[01]可拖动、可调节大小、自定义按钮风格的无边框WPF程序

本文介绍如何在WPF中创建可拖动、可调节大小的无边框窗口,并通过自定义按钮风格来实现美观的界面。具体步骤包括定义按钮样式、应用样式以及确保按钮位置随着窗口变化而变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初学WPF,用VS2012写了一个可拖动、可调节大小、自定义按钮风格的无边框程序。
效果如下:

 

实现过程:
一、拖动、调节大小、无边框主要参考了: http://blog.youkuaiyun.com/dlangu0393/article/details/12548731

 

二、自己主要完成自定义按钮效果。

    1.  WPF定义按钮风格方法

(1) 添加一个Resource Dictionary文件,如Style.xaml。例如:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <BitmapImage x:Key="bgMin">/Images/bg_min.png</BitmapImage>
    <BitmapImage x:Key="bgMinOver">/Images/bg_min_over.png</BitmapImage>
    <Style x:Key="btnTemplate" TargetType="Button">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Border Background="{TemplateBinding Background}">
                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    <Style x:Key="btnMinStyle" TargetType="Button" BasedOn="{StaticResource btnTemplate}">
        <Setter Property="Background">
            <Setter.Value>
                <ImageBrush ImageSource="{StaticResource bgMin}" Stretch="Fill"/>
            </Setter.Value>
        </Setter>
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
                <Setter Property="Background">
                    <Setter.Value>
                        <ImageBrush ImageSource="{StaticResource bgMinOver}" Stretch="Fill"/>
                    </Setter.Value>
                </Setter>
            </Trigger>
        </Style.Triggers>
    </Style>
</ResourceDictionary>

(2) 应用风格

在窗体xaml文件中引用资源文件Style.xaml

<Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Theme/Style.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
</Window.Resources>

设置按钮Style属性

<Button Style="{StaticResource btnMinStyle}" />

(3) 如果要在窗体类中,用代码设置按钮的风格,方法如下

this.MinimizeButton.Style = (Style)Resources["btnMinStyle"];

 

    2. 按钮的位置随窗口大小改变

在窗体xaml中的Grid中定义行列,例如设置Grid为两列

<Grid>
    ...
    <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition  Width="93"/>
    </Grid.ColumnDefinitions>
    ...
    ...
</Grid>

将包含了按钮的Grid作为以上Grid的子元素,设置位于第二列

<Grid x:Name="SystemCmdBar"Width="93" Grid.Column="1">...</Grid>

SystemCmdBar的包含了三个按钮。这样,在不设置第一列的宽度的情况下,位于第二列的SystemCmdBar将始终位于窗口右侧。

 

三、源程序: ase0701.zip

 

转载于:https://www.cnblogs.com/yuzhiyu3/p/4068746.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值