随笔分类 -  WPF

WinFX
摘要:目前为止,我们已经简单的处理了对象。然而,这并不是数据的唯一来源;XML和突然想到的相关数据库,都是流行的选择。更进一步地,由于XML或 相关数据库并不能存储数据为.NET对象,某些转换可能需要支持数据绑定,正如你会想到的,需要数据源对象上的.NET属性。而且即使我们可以直接在xaml中声明对象,仍然希望有一个层间接地从其他源中拉数据,甚至于将这个工作交给一个工作线程,如果说取回是一个呆板的操作。... 阅读全文
posted @ 2008-04-04 12:46 包建强 阅读(1149) 评论(3) 推荐(0)
摘要:目前为止,你已经看到一些示例将控件绑定到一个单独的对象。然而,更复杂的使用是绑定到一个对象列表。例如,想象一下,我们的对象数据源可以创建一个新类型表示Person对象的列表,正如示例4-19: 示例4-19 using System.Collections.Generic; // List namespace PersonBinding { // XAML doesn't (yet) ha... 阅读全文
posted @ 2008-04-04 12:36 包建强 阅读(1562) 评论(1) 推荐(0)
摘要:我们手动编写代码保证UI和数据同步。有效将两组属性隐式的绑定在一起,一组来自Person对象,另一组来自显示Person对象的控件。数据绑定用于显式的将属性从一个对象绑定到另一个,保持它们的同步,并转换为适当的类型,正如图4-7所示。 图4-7 4.2.1 绑定 取代以在代码中手动设置TextBox对象的Text属性并保证它们是最新的,数据绑定允许我们使用Binding对象的实例来设置Tex... 阅读全文
posted @ 2008-04-04 12:24 包建强 阅读(1361) 评论(4) 推荐(0)
摘要:考虑一个非常简单的应用程序:遍及一个人的名字和年龄,正如图4-1所示: 图4-1 图4-1可以实现为一个简单的xaml如示例4-1。 示例4-1 Name: Age: Birthday 在这个简单应用程序中显示的数据,可以被一个简单的类表现,如示例4-2所示。 示例4-2 public class Person {... 阅读全文
posted @ 2008-04-04 12:15 包建强 阅读(1081) 评论(1) 推荐(0)
摘要:任何应用程序都存在允许用户操作的数据,无论其来自对象,还是不同等级的或相关的资源。不管数据来自何处或者无论以什么格式,你可以对这些数据做很多事情,包括显示,转换,排序,过滤,关联,时常还会编辑它们。如果没有一种数据绑定的引擎,你将要手动地在UI和数据之间进行大批量的往返转换。适当的使用数据绑定,你只需要少量优雅的代码就可以获取更多的绑定样式——这样做通常是值得的。 阅读全文
posted @ 2008-04-04 11:54 包建强 阅读(699) 评论(2) 推荐(0)
摘要:样式支持你定义一个策略来设置可视化元素的依赖属性。属性的设置可以被命名以及手动或者编程方式地通过名称应用,或者使用元素类型样式来自动应用。除了提供不变的依赖属性值之外,样式可以包含基于条件的属性值——基于依赖属性,数据属性或者事件。还有,如果设置属性并不足以获取到你寻求的外观,你可以替换一个非可视化的控件,使用控件模板生成全部的控件行为。 但这并不是样式的全部。要了解动画是如何工作的,你可以阅读第... 阅读全文
posted @ 2008-04-04 11:53 包建强 阅读(568) 评论(2) 推荐(0)
摘要:如果仔细的看我们当前的TTT游戏,会发现Button对象并没有完全为我们工作。哪些TTT面板有内圆角? 图5-14 这里,我们真正需要的是能够保持按钮的行为,如支持内容和点击事件,但是我们想要接管这些按钮的外观。WPF允许这种方式,因为内在的控件创建的时候是缺少外观性的,例如,他们提供行为,但是外观可以被完全包装在客户端控件的外面。 还记得我们是如何使用数据模板,来为非可视化对象提供外观的么... 阅读全文
posted @ 2008-04-04 11:52 包建强 阅读(1035) 评论(2) 推荐(0)
摘要:目前为止,我们已经看到样式,作为一个Setter元素的集合。当应用一个样式时,在Setter元素中描述的设置不会无条件地应用(除非复写每一个设置的实例)。另一方面,触发器是一种在条件中包装了一个或更多Setter元素的方式,如果条件为真,相应地Setter元素会被执行,而条件为false的时候,属性值返回预先触发的值。 WPF伴随着3种你可以在一个触发器条件中检查的事情一起发生,依赖属性,.NET... 阅读全文
posted @ 2008-04-04 11:47 包建强 阅读(1652) 评论(3) 推荐(0)
摘要:让我们想象一下我们想要实现TTT更有娱乐性的一个版本(这是大部分游戏中最重要的特色)。例如,TTT的一种变体允许玩家每次只能占据3个格子,去除第一步在下第四步的时候,去除第二步在下第五步的时候,,以此类推。为了实现这个变体,我们需要保持对每一步按顺序跟踪——可以利用PlayMover类,如示例5-20。 示例5-20 namespace TicTacToe { public class P... 阅读全文
posted @ 2008-04-04 11:40 包建强 阅读(1170) 评论(5) 推荐(0)
摘要:命名样式非常有用,当你得到一组属性并应用到特点的元素上。然而,如果你想要应用一个统一的样式到所有确定元素类型的实例,设置TargetType而不用一个Key,如示例5-16所示。 示例5-16 在示例5-16所示,我们已经得到了两种样式,一种是带有TargetType的Button,没有key;另一种是带有TargetType的TextBlock,没有key。它们都以同样... 阅读全文
posted @ 2008-04-04 11:37 包建强 阅读(788) 评论(2) 推荐(1)
摘要:通过把同样的内嵌样式提升到资源中(正如第一章介绍的),我们可以给它一个名字,以及按名字使用它在我们的Button实例上,正如示例5-5。 示例5-5 在示例5-5中,我们在属性中使用到Control前缀取代Button前缀,从而允许样式更广泛的应用,正如我们将要看到的。 5.3.1 TargetType属性 方便起见,如果所有的属性可以在一个共享... 阅读全文
posted @ 2008-04-04 11:35 包建强 阅读(865) 评论(1) 推荐(0)
摘要:每一个“可样式化”的WPF元素都有一个Style属性,可以在内部设置这个属性——使用XAML属性-元素的语法(在第一章讨论的),如示例5-4。 示例5-4 因为我们想捆绑属性值在我们的样式中,我们有一个带有两个Setter子元素的Style元素,一个是我们想要设置的每个属性,如FontSize和FontWeight,都带有Button前缀,指出了包含属性的类。适用... 阅读全文
posted @ 2008-04-04 11:24 包建强 阅读(774) 评论(2) 推荐(0)
摘要:作为一个样式如何使其在WPF使用的例子,,让我们看一下TTT简单的实现,如示例5-1。 示例5-1 这个grid的外观上排列了一组9个按钮在一个3X3... 阅读全文
posted @ 2008-04-04 11:24 包建强 阅读(823) 评论(2) 推荐(0)
摘要:总而言之,对文档的处理,“样式”是应用到某个范围内容的一组属性,如文本、图像等等。举例来说,我们正在使用的样式名为“Normail,Body,b”,并用于预出版的文档,这意味着使用10号Times字体,完全对齐。文档的稍后部分,我们将要使用名为“Code,x,s”的样式,这将使用9号Courier New字体,居左对齐。当内容生成内容的时候,样式就应用到内容,产生确定的外观。 在WPF中,样式同样... 阅读全文
posted @ 2008-04-04 11:13 包建强 阅读(572) 评论(2) 推荐(0)
摘要:WPF提供了资源工具,让我们运用在用户界面中,动态并具有一致性。我们可以在资源字典中存储任意资源,并且可以遍及应用程序引用这些资源。WPF的样式机制依赖于资源字典——通过为控件设置属性和模板,基于应用程序的皮肤或当前的系统配置主题。而且,对于二进制资源,包含了编译后的BAML版本的xaml文件,WPF使用明显的本地化ResourceManager体系,为终端用户选取最适合的资源作为用户界面的文化。... 阅读全文
posted @ 2008-04-04 11:12 包建强 阅读(512) 评论(1) 推荐(0)
摘要:如果你打算发布你的应用程序到全球各地,你可能需要为不同地区的用户界面准备不同的版本。至少,这需要解决将文本翻译成适当的语言;同样需要解决UI改变的问题。你可能需要特定的外观适应为本地化的文化习俗。或者,你可能会发现原始的外观在翻译后并不能正常工作,因为词的长度是不一样的。(虽然WPF的外观体系避免了这一问题,更易于创建更弹性的外观。) 为你的软件在不同的市场创建不同的版本是可能的。尽管如此,更加普... 阅读全文
posted @ 2008-04-04 11:12 包建强 阅读(915) 评论(1) 推荐(0)
摘要:尽管ResourceDictionary和系统级别的资源适合于作为数据存在于对象中,然而,并不是所有的资源都能很好的满足这个模型。能够处理二进制流通常是很有用的。例如,图像,声频和视频,都是有效地二进制的代表,但是这些资源在xaml内都没有相应的标签,而且毕竟这些对象通常表现为底层数据的包装。标记语言本身代表了一种挑战:xaml页面必须编译到我们的应用程序中。因此,需要一种处理二进制流的方法。 W... 阅读全文
posted @ 2008-04-04 11:08 包建强 阅读(1170) 评论(1) 推荐(0)
摘要:WPF的样式机制以来于资源体系来定位样式。正如你在第5章看到的,样式在元素的资源片段中定义,而且样式通过其名字被引用,正如示例6-18所示: 示例6-18 Hello 然而,如何定义一个样式,使之自动的应用到一个元素,而无需显示指定要引用的资源——这是可以实现的,而且非常有用——当你需要把一个样式应用到具有独特类型的... 阅读全文
posted @ 2008-04-04 11:04 包建强 阅读(841) 评论(1) 推荐(1)
摘要:资源这个词具有非常广泛的意义。任何对象都可以是一个资源。一个在用户界面中经常使用的Brush或者Color可以是一个资源。一段文本或者一个图形也可以是一个资源。没有什么特殊的对象不可以成为一个资源。资源的底层处理机制确保了获取你所需要的资源成为可能,而不闭关心这个资源是什么;同时,这套机制可以简单的识别和定位对象。 资源管理的核心是ResourceDictionary这个类。这是一个相当简单的集合... 阅读全文
posted @ 2008-04-04 10:57 包建强 阅读(1341) 评论(1) 推荐(0)
摘要:WPF为我们架构一个应用程序的用户界面提供了相当大的弹性。但是,功能越强大,需要注意的就越多。我们必须避免使用户迷失在不协调而且过分装饰的前端。一个应用程序的用户界面应该是内在协调的,而且,应用程序之间不光区别在视觉化上,更多的是,对于用户所选择的操作系统的视觉主题,在感观上都是一致的。 在上章,我们已经看到样式和模板是如何允许我们控制应用程序的外观。这些都是基于WPF的资源(Resource)... 阅读全文
posted @ 2008-04-04 10:39 包建强 阅读(502) 评论(1) 推荐(0)