使用 XAML 创建具有动画,玻璃效果的按钮
- 格式:doc
- 大小:221.00 KB
- 文档页数:20
xaml的注释在使用XAML(eXtensible Application Markup Language)构建界面和布局的过程中,了解和掌握如何添加注释将是非常有帮助的。
注释在XAML代码中起到了解释、说明和文档化的作用,能够提高代码的可读性和维护性。
本文将介绍在XAML中添加注释的方法和注意事项。
一、注释的基本语法在XAML中,注释以"<!--"开头,以"-->"结尾。
注释的语法是固定的,不可更改。
二、添加注释的位置注释可以添加在XAML的任意位置,可以是整个元素的注释,也可以是特定属性的注释。
需要注意的是,注释不会被编译和执行,仅仅是为了开发人员阅读和理解代码时使用。
三、注释的作用1. 解释代码意图:注释能够很好地解释代码的意图和目的,帮助其他开发人员更好地理解代码。
2. 提示注意事项:注释可以用来提醒开发人员注意一些特殊情况或者约束条件,避免出现潜在的问题。
3. 方便文档化:注释可以用来记录代码的变更记录、说明特定部分的实现细节等,方便后续的文档编写和维护。
四、注释的编写规范1. 准确明了:注释应该准确地描述代码的功能和用途,避免产生歧义和误解。
2. 简洁清晰:注释应该尽量使用简洁清晰的语言,避免使用复杂的句式和技术术语,以提高阅读效率。
3. 与代码一致:注释应该与代码保持一致,不应该与实际代码逻辑有出入,避免给其他开发人员带来困惑。
五、注释的示例下面以一个简单的XAML代码片段为例,展示如何添加注释:这是一个Button的示例点击按钮时触发Command,执行相关操作<Button Style="{StaticResource ButtonStyle}"Content="Click me"Command="{Binding MyCommand}" />通过本文的介绍,我们了解了在XAML中添加注释的方法和注意事项。
AE中的按钮点击动画制作Adobe After Effects(简称AE)是一款常用的视频后期制作软件,它提供了丰富的特效及动画效果,让用户可以制作出令人惊叹的视觉效果。
在许多视频中,我们常常会看到各种各样的按钮点击效果,这些动画效果能够提升用户体验,使整个界面更加生动有趣。
本文将介绍如何在AE中制作按钮点击动画效果。
在AE中制作按钮点击动画,需要使用一些基本的工具和技术。
首先,我们需要创建一个新的合成。
在AE界面的左下角,点击“新建合成”按钮,在弹出的菜单中选择“合成”选项。
根据需要设置合成的尺寸和帧速率,然后点击“确定”。
接下来,我们需要在合成中创建一个按钮形状。
在AE的工具栏中,选择“椭圆工具”或“矩形工具”,根据需要来选择。
然后,在合成中点击并拖动鼠标,创建一个合适大小的按钮。
可以通过调整形状的位置、尺寸和颜色来使按钮更加美观。
在制作按钮点击动画时,一个常见的效果是按钮在被点击时产生缩放效果。
为了实现这个效果,我们可以使用AE中的“缩放”属性。
首先,选中按钮图层,在时间轴面板中展开该图层的属性,在Transform属性组中找到“缩放”属性。
点击表达式图标旁边的钟表图标,然后在弹出的表达式编辑器中输入以下表达式:scale = [100, 100];t = yer("按钮图层").effect("时间")("滑块");ease(t, 0, 1, scale * 1.2, scale)在这个表达式中,“按钮图层”是按钮所在的图层的名称,“时间”是表示按钮点击时所需的时间的特效控制器名称。
通过使用ease函数,我们可以在按钮被点击时实现一个平滑的缩放效果,将按钮的缩放比例从原始大小scale变为1.2倍。
根据需要,可以自行调整缩放效果的比例。
除了缩放效果,我们还可以为按钮添加其他动画效果,比如颜色变化或阴影效果。
在AE中,我们可以通过使用关键帧和预设效果来实现这些效果。
使用前端动画库创建酷炫的动效效果在现代网页设计中,动效已经成为了一个非常重要的元素。
通过动效的运用,可以为网页增添生动感,使用户的体验更加丰富和有趣。
而在实际的开发中,我们可以利用前端动画库来实现酷炫的动效效果。
本文将介绍一些常用的前端动画库,并举例说明如何使用它们创建令人惊艳的动效效果。
一、GSAP动画库GSAP(GreenSock Animation Platform)是一款功能强大且灵活的前端动画库。
它支持多种常见的动画效果,如移动、旋转、缩放、淡入淡出等,并提供了丰富的控制选项,可以完全定制动画的行为和效果。
下面通过一个例子来说明如何使用GSAP创建一个炫酷的动效。
首先,我们需要在HTML文档中引入GSAP库,并在JS文件中编写以下代码:```javascript('.box', {duration: 2, // 动画持续时间x: 200, // 水平移动距离y: 100, // 垂直移动距离rotation: 360, // 旋转角度scale: 2, // 缩放比例opacity: , //不透明度ease: "(1, )" // 缓动函数});```上述代码中,我们使用了to()方法来创建动画效果。
通过指定不同的参数,我们可以控制动画的持续时间、移动距离、旋转角度、缩放比例、不透明度等。
同时,我们还可以通过ease参数来设置缓动函数,使动画更加平滑自然。
通过简单的一段代码,我们就能够实现一个精彩的动效效果。
二、库除了GSAP,还有一个非常受欢迎的动画库是。
它提供了大量的预定义动画效果,我们只需要通过添加相应的class即可使用。
下面我们以一个按钮的出现动画为例,来演示如何使用库。
首先,我们需要在HTML文档中引入库,并在按钮的class属性中添加"animate__animated"和"animate__fadeInUp"两个class,代码如下所示:```html<button class="animate__animated animate__fadeInUp">Click Me</button>```在上述代码中,我们使用了"animate__animated" class来指定元素要执行动画效果,并使用"animate__fadeInUp" class来指定动画效果为向上渐变出现。
WPF⾃定义控件与样式-⾃定义按钮(Button)⼀、前⾔程序界⾯上的按钮多种多样,常⽤的就这⼏种:普通按钮、图标按钮、⽂字按钮、图⽚⽂字混合按钮。
本⽂章记录了不同样式类型的按钮实现⽅法。
⼆、固定样式的按钮固定样式的按钮⼀般在临时使⽤时或程序的样式⽐较固定时才会使⽤,按钮整体样式不需要做⼤的改动。
2.1 普通按钮-扁平化风格先看效果:定义Button的样式,详见代码:<Style x:Key="BtnInfoStyle" TargetType="Button"><Setter Property="Width" Value="70"/><Setter Property="Height" Value="25"/><Setter Property="Foreground" Value="White"/><Setter Property="BorderThickness" Value="0"/><Setter Property="Background" Value="#43a9c7"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="Button"><Border x:Name="border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels <TextBlock Text="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" VerticalAlignment="Center" HorizontalAlignment="Center"/></Border><ControlTemplate.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter TargetName="border" Property="Background" Value="#2f96b4"/></Trigger><Trigger Property="IsPressed" Value="True"><Setter TargetName="border" Property="Background" Value="#2a89a4"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style>引⽤⽅法:<Grid Background="White"><StackPanel Orientation="Horizontal" Margin="10" VerticalAlignment="Top"><Button Style="{StaticResource BtnInfoStyle}" Content="信息" Margin="5 0"/></Grid>上述代码实现了Button按钮的扁平化样式,如果你想调整颜⾊风格,通过修改Background的值可实现默认颜⾊,⿏标经过颜⾊以及⿏标按下颜⾊。
Axure设计中的状态切换与动画效果实现技巧在用户界面设计中,状态切换和动画效果是提升用户体验的重要因素之一。
Axure是一款强大的原型设计工具,提供了丰富的交互效果和动画功能,可以帮助设计师实现各种状态切换和动画效果。
本文将介绍一些Axure设计中的状态切换与动画效果实现技巧,希望对设计师们有所帮助。
一、状态切换的基本原理在Axure中,状态切换是通过改变控件的属性来实现的。
控件的属性包括大小、位置、颜色、透明度等,通过改变这些属性的值,可以实现不同的状态切换效果。
例如,当鼠标移入一个按钮时,可以改变按钮的颜色或大小,以提示用户当前的状态。
二、使用条件判断实现状态切换Axure提供了条件判断的功能,可以根据用户的操作来改变控件的属性。
通过设置条件判断,可以实现各种复杂的状态切换效果。
例如,当用户点击一个按钮时,可以通过条件判断来改变按钮的颜色、大小或者位置。
这种方式可以实现更加灵活的状态切换效果。
三、利用动态面板实现动画效果动画效果是用户界面设计中的重要组成部分,可以增加界面的生动性和吸引力。
在Axure中,可以利用动态面板来实现各种动画效果。
动态面板是一种特殊的控件,可以包含多个状态,通过改变状态的显示和隐藏来实现动画效果。
例如,可以创建一个动态面板来模拟图片的滑动效果,通过改变图片的位置来实现动画效果。
四、使用交互动作实现交互效果交互效果是用户界面设计中的关键要素,可以提高用户的参与感和体验。
在Axure中,可以通过设置交互动作来实现各种交互效果。
交互动作是指在用户操作某个控件时触发的动作,可以改变其他控件的属性或者执行其他操作。
例如,当用户点击一个按钮时,可以通过设置交互动作来改变其他控件的状态或者跳转到其他页面。
五、利用变量和表达式增加交互性在Axure中,可以使用变量和表达式来增加交互性。
变量是一种存储数据的容器,可以在不同的控件之间传递数据。
通过使用变量和表达式,可以实现更加复杂的交互效果。
3.XAML介绍1. XAML介绍1. XAML介绍XAML(Extensible Application Markup Language)(发⾳:zammel)可扩展应⽤程序标记语⾔。
XAML是为构建应⽤程序⽤户界⾯⽽创建的⼀种新的描述性语⾔。
XAML提供了⼀种便于扩展和定位的语法来定义和程序逻辑分离的⽤户界⾯,⽽这种实现⽅式和中的"代码后置"模型⾮常类似。
XAML是⼀种解析性的语⾔,尽管它也可以被编译。
它的优点是简化编程式上的⽤户创建过程,应⽤时要添加代码和配置等。
2. XAML 编译XAML经过编译后,会⽣成BAML(Binary Application Markup Language ⼆进制应⽤程序标记语⾔)。
BAML是标记化的,这样可以⽤较短的标记来代替XAML。
在项⽬的obj⽂件夹下,可以找到编译后的BAML⽂件。
这是临时⽂件,当可以运⾏的dll⽣成后,BAML已经被嵌⼊到dll中去了。
3. XAML基础知识XAML⽂档中的每⼀个元素都映射为.NET类的⼀个实例。
元素的名称对应类名。
举例:<Button>-对应WPF创建Button对象元素其实就是类,如Window元素代表的是System.Windows.Window类顶级Window元素代表整个窗⼝,Grid元素中可以放置任何控件。
通常来说,顶级元素⼀般为窗⼝(Window),页(Page),⽤户控件(UserControl)等。
与所有XML⽂档⼀致,在XAML⽂档中只能有⼀个顶级元素4. Window类的常⽤属性属性说明Title窗⼝的标题Width窗⼝的宽度Height窗⼝的⾼度Visibility指⽰窗⼝可见性TopMost指定窗⼝是否是顶层窗⼝WindowState指⽰窗⼝的状态(最⼤化,最⼩化等)WindowStyle指⽰窗⼝的样式(有⽆边框等)WindowStartupLocation指⽰窗⼝的启动位置ShowInTaskbar指⽰窗⼝是否在状态栏显⽰Icon允许你定义窗⼝的图标,该图标通常显⽰在窗⼝标题之前的左上⾓。
materialdesigninxamltoolkit原理全文共四篇示例,供读者参考第一篇示例:Material Design in XAML Toolkit,简称MDX Toolkit,是一个用于WPF和UWP应用程序的开源框架,旨在帮助开发者轻松实现Google Material Design风格的界面设计。
这个框架提供了一系列实用的控件、样式和动画效果,让开发者可以快速创建具有现代感和流畅感的用户界面。
MDX Toolkit的原理主要基于Material Design设计原则,即平面化设计、卡片效果、阴影效果、鲜艳的色彩和动画等。
这些设计原则旨在为用户提供更加直观、清晰和易于操作的界面体验。
MDX Toolkit通过提供一系列预先设计好的控件和样式,帮助开发者轻松地将这些设计原则应用到他们的应用程序中。
在MDX Toolkit中,最核心的概念是“Theme”,即主题。
主题定义了应用程序的整体风格和色彩方案,包括背景色、前景色、按钮样式、文本样式等。
开发者可以选择使用现有的主题,也可以根据自己的需求自定义主题。
通过简单地设置应用程序的主题,开发者可以快速地改变整个应用程序的外观,实现一键切换风格的效果。
除了主题之外,MDX Toolkit还提供了许多常用的控件,如按钮、文本框、下拉框、进度条等。
这些控件都经过精心设计并且具有统一的风格,可以无缝地与主题相配合。
MDX Toolkit还提供了一些特殊的控件,如Avatar、Card、Chip等,这些控件提供了更加丰富和独特的界面元素,帮助开发者实现更具有创意和个性化的设计。
除了控件和主题之外,MDX Toolkit还提供了一些动画效果,如按钮点击效果、页面切换效果等。
这些动画效果可以增加用户界面的交互性和吸引力,提升用户体验。
开发者可以直接在XAML中调用这些动画效果,也可以通过代码控制动画的触发和行为。
第二篇示例:MaterialDesignInXAMLToolkit 是一个用于在WPF 应用程序中实现Material Design 风格的工具包。
/zz/2008/0721/article_8170.html首先打开Microsoft Visual Studio 2008 ,新建一个WPF项目,在上面随便放几个按钮:然后给各个按钮设置不同的背景颜色:设置好之后就是这样啦:’’’’’’’然后我们就开始在App.xaml 文件中定义按钮样式了:定义的样式代码如下:以下为引用的内容:<Application x:Class="WPFButton.App"xmlns="/winfx/2006/xaml/presentation"xmlns:x="/winfx/2006/xaml"StartupUri="Window1.xaml"><Application.Resources><!--定义按钮样式--><Style TargetType="Button"><Setter Property="Foreground" Value="Black"/><!--修改模板属性--><Setter Property="Template"><Setter.Value><!--控件模板--><ControlTemplate TargetType="Button"><!--背景色--><Border x:Name="back" Opacity="0.8" CornerRadius="3"><Border.BitmapEffect><OuterGlowBitmapEffect Opacity="0.7" GlowSize="0"GlowColor="{Binding RelativeSource={RelativeSource TemplatedParent},Path=(Button.Background).(SolidColorBrush.Color)}" /></Border.BitmapEffect><Border.Background><LinearGradientBrush StartPoint="0,0" EndPoint="0,1.5"><GradientBrush.GradientStops><GradientStopCollection><GradientStop Color="{BindingRelativeSource={RelativeSource TemplatedParent},Path=(Button.Background).(SolidColorBrush.Color)}" Offset="0"/><GradientStop Color="{BindingRelativeSource={RelativeSource TemplatedParent},Path=(Button.Background).(SolidColorBrush.Color)}" Offset="0.4"/><GradientStop Color="#FFF" Offset="1"/></GradientStopCollection></GradientBrush.GradientStops></LinearGradientBrush></Border.Background><!--前景色及边框--><Border x:Name="fore" BorderThickness="1" CornerRadius="3" BorderBrush="#5555"><Border.Background><LinearGradientBrush StartPoint="0,0" EndPoint="0,1"><GradientBrush.GradientStops><GradientStopCollection><GradientStop Color="#6FFF" Offset="0.5"/><GradientStop Color="#1111" Offset="0.51"/></GradientStopCollection></GradientBrush.GradientStops></LinearGradientBrush></Border.Background><!--按钮内容--><ContentPresenter x:Name="content" HorizontalAlignment="Center" VerticalAlignment="Center" Content="{TemplateBinding Content}"><ContentPresenter.BitmapEffect><DropShadowBitmapEffect Color="#000" Direction="-90" ShadowDepth="2" Softness="0.1" Opacity="0.3" /></ContentPresenter.BitmapEffect></ContentPresenter></Border></Border><!--触发器--><ControlTemplate.Triggers><!--鼠标移入移出--><Trigger Property="IsMouseOver" Value="True"><BeginStoryboard><Storyboard><DoubleAnimation To="6" Duration="0:0:0.2"Storyboard.TargetName="back"Storyboard.TargetProperty="(Border.BitmapEffect).(OuterGlowBitmapEffect.GlowSize)" /><ColorAnimation To="#AFFF" BeginTime="0:0:0.2"Duration="0:0:0.2" Storyboard.TargetName="fore"Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[ 0].(GradientStop.Color)" /><ColorAnimation To="#3FFF" BeginTime="0:0:0.2"Duration="0:0:0.2" Storyboard.TargetName="fore"Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[ 1].(GradientStop.Color)" /></Storyboard></BeginStoryboard></Trigger.EnterActions><Trigger.ExitActions><BeginStoryboard><Storyboard><DoubleAnimation Duration="0:0:0.2"Storyboard.TargetName="back"Storyboard.TargetProperty="(Border.BitmapEffect).(OuterGlowBitmapEffect.GlowSize)" /><ColorAnimation Duration="0:0:0.2"Storyboard.TargetName="fore"Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[ 0].(GradientStop.Color)" /><ColorAnimation Duration="0:0:0.2"Storyboard.TargetName="fore"Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[ 1].(GradientStop.Color)" /></Storyboard></BeginStoryboard></Trigger.ExitActions></Trigger><!--按钮按下弹起--><Trigger Property="IsPressed" Value="True"><BeginStoryboard><Storyboard><DoubleAnimation To="3" Duration="0:0:0.1"Storyboard.TargetName="back"Storyboard.TargetProperty="(Border.BitmapEffect).(OuterGlowBitmapEffect.GlowSize)" /><ColorAnimation To="#3AAA" Duration="0:0:0.1" Storyboard.TargetName="fore"Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[ 0].(GradientStop.Color)" /><ColorAnimation To="#2111" Duration="0:0:0.1" Storyboard.TargetName="fore"Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[ 1].(GradientStop.Color)" /></Storyboard></BeginStoryboard></Trigger.EnterActions><Trigger.ExitActions><BeginStoryboard><Storyboard><DoubleAnimation Duration="0:0:0.1"Storyboard.TargetName="back"Storyboard.TargetProperty="(Border.BitmapEffect).(OuterGlowBitmapEffect.GlowSize)" /><ColorAnimation Duration="0:0:0.1"Storyboard.TargetName="fore"Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[ 0].(GradientStop.Color)" /><ColorAnimation Duration="0:0:0.1"Storyboard.TargetName="fore"Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[ 1].(GradientStop.Color)" /></Storyboard></BeginStoryboard></Trigger.ExitActions></Trigger><!--按钮失效--><Trigger Property="IsEnabled" Value="False"><Setter Property="Foreground" Value="#B444"/><Trigger.EnterActions><BeginStoryboard><Storyboard><DoubleAnimation To="0" Duration="0:0:0.3"Storyboard.TargetName="back"Storyboard.TargetProperty="(Border.BitmapEffect).(OuterGlowBitmapEffect.GlowSize)" /><DoubleAnimation To="1" Duration="0:0:0.1"Storyboard.TargetName="content"Storyboard.TargetProperty="(ContentPresenter.BitmapEffect).(DropShadowBitmapEffect .Opacity)" /><DoubleAnimation To="-135" Duration="0:0:0.1" Storyboard.TargetName="content"Storyboard.TargetProperty="(ContentPresenter.BitmapEffect).(DropShadowBitmapEffect .Direction)" /><ColorAnimation To="#FFF" Duration="0:0:0.3" Storyboard.TargetName="content"Storyboard.TargetProperty="(ContentPresenter.BitmapEffect).(DropShadowBitmapEffect .Color)" /><ColorAnimation To="#D555" Duration="0:0:0.3" Storyboard.TargetName="fore"Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" /><ColorAnimation To="#CEEE" Duration="0:0:0.3" Storyboard.TargetName="fore"Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[ 0].(GradientStop.Color)" /><ColorAnimation To="#CDDD" Duration="0:0:0.3" Storyboard.TargetName="fore"Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[ 1].(GradientStop.Color)" /></Storyboard></BeginStoryboard></Trigger.EnterActions><Trigger.ExitActions><BeginStoryboard><Storyboard><DoubleAnimation Duration="0:0:0.1"Storyboard.TargetName="back"Storyboard.TargetProperty="(Border.BitmapEffect).(OuterGlowBitmapEffect.GlowSize)" /><DoubleAnimation Duration="0:0:0.1"Storyboard.TargetName="content"Storyboard.TargetProperty="(ContentPresenter.BitmapEffect).(DropShadowBitmapEffect .Opacity)" /><DoubleAnimation Duration="0:0:0.1"Storyboard.TargetName="content"Storyboard.TargetProperty="(ContentPresenter.BitmapEffect).(DropShadowBitmapEffect .Direction)" /><ColorAnimation Duration="0:0:0.1"Storyboard.TargetName="content"Storyboard.TargetProperty="(ContentPresenter.BitmapEffect).(DropShadowBitmapEffect .Color)" /><ColorAnimation Duration="0:0:0.1"Storyboard.TargetName="fore"Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" /><ColorAnimation Duration="0:0:0.1"Storyboard.TargetName="fore"Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[ 0].(GradientStop.Color)" /><ColorAnimation Duration="0:0:0.1"Storyboard.TargetName="fore"Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[ 1].(GradientStop.Color)" /></Storyboard></BeginStoryboard></Trigger.ExitActions></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style></Application.Resources></Application>珞珈网诚邀广大网友投稿,您可以用相机或手机记录下身边的感人故事,精彩瞬间。
materialdesigninxamltoolkit原理1. 引言Material Design是一种由Google推出的设计语言,旨在为用户提供一致、直观的用户界面和交互体验。
为了在WPF应用程序中实现Material Design,开发人员可以使用MaterialDesignInXAMLToolkit。
本文将深入研究MaterialDesignInXAMLToolkit的原理和实现方式,以帮助开发人员更好地理解和应用这个工具。
2. Material Design简介在深入研究MaterialDesignInXAMLToolkit之前,我们先简要介绍一下Material Design的基本原理。
Material Design以材料为基础,通过使用真实世界中的材料和纹理来创造出具有层次感、动感和交互性的用户界面。
它强调直观性、一致性和自然性,并提供了丰富的动画效果、阴影效果和交互模式。
3. MaterialDesignInXAMLToolkit概述MaterialDesignInXAMLToolkit是一个开源项目,旨在帮助开发人员轻松地将Material Design应用于WPF应用程序中。
它提供了一系列自定义控件、样式和资源,以及用于实现各种常见效果(如阴影效果、波纹效果等)的工具。
4. 样式与控件在使用MaterialDesignInXAMLToolkit时,样式是非常重要的一部分。
它定义了控件的外观和行为,包括颜色、字体、边框、阴影等。
MaterialDesignInXAMLToolkit提供了一套默认的样式,开发人员可以直接使用,也可以根据自己的需求进行自定义。
5. 资源和模板MaterialDesignInXAMLToolkit还提供了一系列资源和模板,以帮助开发人员更轻松地创建符合Material Design准则的用户界面。
这些资源包括颜色调色板、图标集、字体等。
开发人员可以使用这些资源来创建自己的界面元素,并通过模板来定义它们的外观和行为。
下图显示的是已完成的按钮。 创建基本按钮 让我们首先从创建一个新项目并向窗口中添加几个按钮开始。 创建新的 WPF 项目并向窗口中添加按钮 1. 启动 Visual Studio。 2. 创建新的 WPF 项目:在“文件”菜单上,指向“新建”,再单击“项目”。 找到“Windows 应用程序(WPF)”模板并将项目命名为“AnimatedButton”。 这将创建应用程序的主干。 3. 添加基本的默认按钮:本演练中所需的全部文件均由该模板提供。 通过在解决方案资源
管理器中双击 Window1.xaml 文件来打开它。 默认情况下,Window1.xaml 中存在一个 Grid 元素。 移除 Grid 元素,并通过向 Window1.xaml 中键入或复制和粘贴以下突出显示的代码来向可扩展应用程序标记语言 (XAML) 页面中添加几个按钮:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="AnimatedButton" Height="300" Width="300" Background="Black">
Button 1 Button 2 Button 3
按 F5 运行该应用程序;您应当能够看到类似下图的一组按钮。
现在您已经创建了基本按钮,这样就完成了在 Window1.xaml 文件中的工作。 本演练其余部分重点介绍如何在 app.xaml 文件中为这些按钮定义样式和模板。
设置基本属性
接着,我们将会为这些按钮设置一些属性,以便控制按钮外观和布局。 您将使用资源来为整个应用程序定义按钮属性,而不是为这些按钮单独设置属性。 在概念上,应用程序资源与网页的外部级联样式表 (CSS) 相似;但是,资源远比级联样式表 (CSS) 强大,在本演练结束时您将明白这一点。 若要进一步了解资源,请参见资源概述。
使用样式为按钮设置基本属性 1. 定义 Application.Resources 块:打开 app.xaml 并添加下面突出显示的标记(如果尚未添加):
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="Window1.xaml" >
资源范围由资源的定义位置来确定。 如果资源是在 app.xaml 文件的 Application.Resoureses 中定义的,则将允许从应用程序中的任何位置使用资源。 若要了解有关定义资源范围的更多信息,请参见资源概述。
2. 创建一个样式并用该样式定义基本属性值:向 Application.Resources 块添加下面的标记。 此标记创建一个应用于该应用程序中所有按钮的 Style,并将这些按钮的 Width 设置为 90,将 Margin 设置为 10:
TargetType 属性指定将该样式应用于 Button 类型的所有对象。 每个 Setter 都为 Style 设置不同的属性值。 因此,此时应用程序中的每个按钮的宽度都为 90,边距都为 10。 如果您按 F5 运行应用程序,则会看到下面的窗口。 您还可以对样式进行更多的处理,这包括以各种方式微调对象的目标、指定复杂的属性值,甚至将样式作为其他样式的输入。 有关更多信息,请参见样式设置和模板化。
3. 为资源设置样式属性值:使用资源,可以通过一种简单的方式来重用通常定义的对象和值。 为了使代码更加模块化,使用资源定义复杂值尤其有用。 向 app.xaml 添加下面突出显示的标记。
StartPoint="0,0" EndPoint="1,1">
您已经在 Application.Resources 块的正下方创建了一个名为“GrayBlueGradientBrush”的资源。 此资源将定义一个水平渐变。 此资源可以在该应用程序中的任何位置(包括在 Background 属性的按钮样式 setter 内部中)用作属性值。 现在,所有的按钮都具有此渐变的 Background 属性值。
按 F5 运行该应用程序。 其外观类似于下图:
创建一个定义按钮外观的模板 在本节中,将创建一个用来自定义按钮外观(表示)的模板。 按钮表示是由几个赋予按钮独特外观的对象(包括矩形和其他组件)组成的。
到目前为止,对应用程序中按钮外观的控制已限制为更改按钮的属性。 如果您希望更彻底地改变按钮的外观,该怎么办? 使用模板可以强有力地控制对象的表示。 由于模板可以在样式中使用,因此您可以将模板应用于所有应用了样式的对象(在本演练中为按钮)。
使用模板定义按钮的外观 1. 设置模板:由于控件(如 Button)具有 Template 属性,因此您可以像对 Style 中所设置的其他属性值那样,使用 Setter 来定义模板属性值。 向按钮样式中添加下面突出显示的标记。
StartPoint="0,0" EndPoint="1,1">
2. 更改按钮表示:此时,您需要定义模板。 添加下面突出显示的标记。 此标记指定了两个后跟 DockPanel 且具有圆角的 Rectangle 元素。 DockPanel 用于承载按钮的 ContentPresenter。 A ContentPresenter 显示按钮的内容。 本演练中,内容为文本 ("Button 1", "Button 2", "Button 3")。 所有模板组件(矩形和DockPanel)都放置在一
个 Grid 内。
Height="{TemplateBinding Height}" ClipToBounds="True">
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Stroke="{TemplateBinding Background}" RadiusX="20" RadiusY="20" StrokeThickness="5" Fill="Transparent" />
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Stroke="Transparent" StrokeThickness="20" Fill="{TemplateBinding Background}" RadiusX="20" RadiusY="20" />