您的位置:首页 > 其它

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

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



实现过程:
一、拖动、调节大小、无边框主要参考了: http://blog.csdn.net/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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: