Silverlight中样式定位的最佳实践

Dav*_*veB 11 silverlight silverlight-2.0 silverlight-3.0

Style StaticResources的最佳放置位置在哪里?我一直将app.xaml中的全局和默认样式以及page_name.xaml中的页面特定样式放在中.每个控件都应该有自己的样式StaticResource吗?在控件中放置一些样式属性是否可以接受?我有一个包含5个TextBox的页面,如果唯一的区别是Width或MaxLength属性,是否应该有每个样式?或者是否应使用每个TextBox的公共属性定义一个样式,并在控件元素中定义特定的样式属性?

Jef*_*cox 10

层次结构存在是有原因的,开始简单是一个好主意,对于你正在使用的元素是本地的,然后在必要时将其移出.

您的设计师也可能有特殊要求可能胜过此.例如,在某些样式上发送许多修订的团队可能希望将所有样式工作包含到单个XAML文件中,直到它准备好了更多.

反向排列的典型样式层次结构

前几个项目是您"最热门"和最常用的样式,通常您需要从底部开始并逐步完成.很高兴不必使用多个XAML文件,并保持包含.

应用程序级别(App.xaml)

对于常见元素,应用程序级样式在应用程序的界面暴露的任何地方都将非常有用.

如果您使用的是Silverlight 2,那么这是您在整个应用中可以访问样式的最佳非黑客方法.

如果经常使用App.xaml资源,请小心,因为生活在应用程序之外的单元测试库将更难以测试,因为它在某些情况下不会获取应用程序的应用程序级样式.

合并字典

合并的资源字典允许您将样式拆分为其他XAML文件,从而可以轻松地按功能区域,功能,控件类型,团队名称等对其进行分解.了解此功能.

考虑在有意义的情况下将此用于app级别样式,因为您可以在单独的项目和解决方案中使用它们.

不适用于Silverlight 2,Silverlight 3中添加了此功能.

页面级

任何特定于单个页面的内容(可能是完整的应用程序,或可视化页面,或应用程序的一部分)都不会超出边缘,这是一个很好的选择.

随意从可视树(例如控制级别)开始,并在有意义的时候将这些样式移动.

小组

很好地包含一堆类似的部分,比如格式化表单时.

在控制

从这里开始.在Blend中为控件设置样式时,它通常从此处开始,除非您选择应用程序范围的资源选项.

这是属性设置和实际上是真正的样式资源之间的中间步骤,正弦它只是控件的Style属性的setter - 但是你可以轻松地添加一个x:Key并在可视化树中移动它你准备好了.

隐含的风格和主题

如果您的团队或公司为特定类型的所有控件使用常规样式集(Buttons,CheckBoxes,您可以命名),请考虑使用Implicit Style Manager功能(Silverlight的值添加)来执行隐式样式.这类似于WPF样式故事,您不需要在所有使用它的地方设置样式.

我在网上找到了一个很好的教程,快速搜索了解有关ISM的更多信息.

何时使用属性而不是共享的常用样式

WRT你的问题,如果你有一组文本框,其中差异是MaxLength,Width等,你应该明确地将它们设置为每个控件实例上的属性 - 如果它们是不同的.

一旦你有几个(比方说,3个元素)使用相同的值,将它拉出然后开始使用Style ="{StaticResource keyName }"属性可能是有意义的.但是,如果你手动输入XAML,那比输入Width ="20"要烦人得多.