【WPF学习】第五十章 故事板】的更多相关文章

正如上一章介绍,WPF动画通过一组动画类(Animation类)表示.使用少数几个熟悉设置相关信息,如开始值.结束值以及持续时间.这显然使得它们非常适合于XAML.不是很清晰的时:如何为特定的事件和属性关联动画,以及如何在正确的时间触发动画. 在所有声明式动画中都会用到如下两个要素: 故事板.故事板是BeginAnimation()方法的XAML等价物.通过故事板将动画指定到合适的元素和属性. 事件触发器.事件触发器响应属性变化或事件(如按钮的Click事件),并控制故事板.例如,为了开始动画,…
正如你所看到的,Blend是一个非常强大的节约时间的设计工具,在Blend下能够设计出很多满意的动画作品,或许他具体是怎么实现的,通过什么方式实现的我们还是一无所知.本篇将续前面几篇基础动画之上,详细介绍Silverlight里提供故事板(StoryBorards)的属性和各种不同类型的动画(Animations)的详细知识点,揭晓在Blend下设计动画的内幕故事. 一.故事板(StoryBoard)属性 Silvelight中的故事板(StoryBoard)提供了管理时间线的功能接口,可以用来…
内容控件(content control)是更特殊的控件类型,它们可包含并显示一块内容.从技术角度看,内容控件时可以包含单个嵌套元素的控件.与布局容器不同的是,内容控件只能包含一个子元素,而布局容器主要愿意可以包含任意多个牵头元素. 正如前面所介绍,所有WPF布局容器都继承自抽象类Panel,该类提供了对包含多个元素的支持.类似地,所有内容控件都继承自抽象类ContentControl.下图显示了ContentControl类的层次结构. 图 ContentControl类的层次结构 如上图所示…
前几章用了相当大的篇幅研究有关WPF布局容器的复杂内容.在掌握了这些基础知识后,就可以研究几个完整的布局示例.通过研究完整的布局示例,可更好的理解各种WPF布局概念在实际窗口中的工作方式. 一.列设置 布局容器(如Grid面板)使得窗口创建整个布局结构变得非常容易.例如,分析如下显示的窗口及设置.该窗口在一个表格结构中排列各个组件——标签.文本框以及按钮. 为创建这一表格,首先定义网格的行和列.行定义足够简单——只需要将每行的尺寸设置为所含内容的高度.这意味着所有行都将使用最大元素的高度,在该示…
1.概念 MVVM是Model-View-ViewModel的缩写形式,它通常被用于WPF或Silverlight开发.这三者之间的关系如下图所示 模型(Model) Model——可以理解为带有字段,属性的类. 视图(View) View——可以理解为我们所看到的UI. 视图模型(View Model) View Model在View和Model之间,起到连接的作用,并且使得View和Model层分离.View Model不仅仅是Model的包装,它还包含了程序逻辑,以及Model扩展,例如,…
在“[WPF学习]第五十章 故事板”中讨论了如何使用代码创建简单动画,以及如何使用XAML标记构建更复杂的故事板——具有多个动画以及播放控制功能.但有时采用更复杂的故事板例程,并在代码中实现全部复杂功能是合理的.实际上,这种情况十分常见.当需要处理多个动画并且预先不知道将有多少个动画或不知道如何配置动画时,就会遇到这种情况.如果希望在不同的窗口中使用相同的动画,或者只是希望从标记中灵活地分离出所有与动画相关的细节以以方便重用,也会遇到这种情况. 通过编写代码创建.配置和启动故事板并不难.只需要创…
(一)WPF中的动画 动画无疑是WPF中最吸引人的特色之一,其可以像Flash一样平滑地播放并与程序逻辑进行很好的交互.这里我们讨论一下故事板. 在WPF中我们采用Storyboard(故事板)的方式来编写动画,为了对Storyboard有个大概的印象,你可以粘贴以下代码到XamlPad来查看效果: <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http:…
Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations) 正如你所看到的,Blend是一个非常强大的节约时间的设计工具,在Blend下能够设计出很多满意的动画作品,或许他具体是怎么实现的,通过什么方式实现的我们还是一无所知.本篇将续前面几篇基础动画之上,详细介绍Silverlight里提供故事板(StoryBorards)的属性和各种不同类型的动画(Animations)的详细知识点,揭晓在Blend下设计动画的内幕故事. 一.故事板(…
创建动画面临的第一个挑战是为动画选择正确的属性.期望的结果(例如,在窗口中移动元素)与需要使用的属性(在这种情况下是Canvas.Left和Canvas.Top属性)之间的关系并不总是很直观.下面是一些指导原则: 如果希望使用动画来使元素显示和消失,不要使用Visibility属性(该属性只能在完全可见和完全不可见之间进行切换).应改用Opacity属性淡入或淡出元素. 如果希望动态改变元素的位置,可考虑使用Canvas面板.它提供了最直接的属性(Canvas.Left及Canvas.Top),…
到目前为止,看到的所有动画都使用线性插值从起点到终点.但如果需要创建具有多个分段的动画和不规则移动的动画.例如,可能希望创建一个动画,快速地将一个元素滑入到视图中,然后慢慢地将它移到正确位置.可通过创建两个连续的动画,并使用BeginTime属性在第一个动画之后开始第二个动画来实现这种效果.然而,还有更简单的方法——可使用关键帧动画. 关键帧动画是由许多较短的段构成的动画.每段表示动画中的初始值,最终值或中间值当运行动画时,它平滑地从一个值移到另一个值. 例如,分析下面的将RadialGradi…