层次结构的存在是有原因的,从你正在使用的元素开始简单并本地化可能是个好主意,然后在必要时将其移出。
您的设计师也可能有特殊要求,这可能胜过这一点。例如,对某些样式发送许多修订的团队可能希望将所有样式工作包含到单个 XAML 文件中,直到它准备好更多。
倒序的典型样式层次结构
前几项是您“最经典”和最常用的样式,通常您会希望从底部开始,然后逐步向上。不必同时处理多个 XAML 文件并保持其包含,这很好。
应用程序级 (App.xaml)
应用级样式将在您的应用暴露其界面的任何地方都非常有用,用于常见元素。
如果您使用的是 Silverlight 2,这是让您的样式在整个应用程序中可访问的最佳非黑客方法。
如果经常使用 App.xaml 资源,请务必小心,因为在您的应用之外的单元测试库将更难以测试,因为它在某些情况下不会获取您应用的应用级样式。
合并字典
合并的资源字典允许您将样式拆分为其他 XAML 文件,从而可以轻松地按功能区域、功能、控件类型、团队名称等进行分解。Learn about this feature。
考虑在有意义的情况下将其用于应用级样式,因为您可以在单独的项目和解决方案中使用它们。
不适用于 Silverlight 2,此功能是在 Silverlight 3 中添加的。
页面级
任何特定于单个页面(可能是完整的应用程序、可视页面或应用程序的一部分)且不会超出边缘的内容都是很好的候选对象。
随意从可视化树的下方开始(例如控件级别),并根据需要将这些样式向上移动。
小组讨论
最好包含一堆相似的部分,比如格式化表格时。
在控制中
从这里开始。当您在 Blend 中设置控件样式时,它通常会从这里开始,除非您选择应用程序范围的资源选项。
这是属性设置和真正成为真正的样式资源之间的中间步骤,因为它只是控件的 Style 属性的设置器 - 但您可以轻松添加 x:Key 并将其移动到准备好后的可视化树。
隐式样式和主题
如果您的团队或公司对特定类型的所有控件(按钮、复选框,等等)使用一组常规样式,请考虑使用隐式样式管理器功能(Silverlight 的增值功能)来执行隐式样式.这类似于 WPF 样式故事,您不需要在所有使用它的地方设置样式。
我在网上找到了一个很好的教程,你可以快速搜索到learn more about ISM。
何时使用属性而不是共享的通用样式
W.R.T.您的问题,如果您有一组文本框,其中差异是 MaxLength、Width 等,您可能应该将它们显式设置为每个控件实例的属性 - 如果它们不同。
一旦您有几个(比如 3 个元素)使用相同的值,将其拉出然后开始使用 Style="{StaticResource keyName}" 属性可能是有意义的.但是,如果您手动输入 XAML,这比输入 Width="20" 更烦人。