内联样式和模板
Windows Presentation Foundation (WPF)提供 Style 对象和模板对象(FrameworkTemplate 子类)作为定义资源中元素的视觉外观的方法,以便可以多次使用它们。 因此,XAML 中类型 Style 和 FrameworkTemplate 的属性几乎总是对已有样式和模板进行资源引用,而不是内联定义新的样式和模板。
嵌入式样式和模板的限制
在可扩展应用程序标记语言(XAML)中,可通过以下两种方式之一设置样式和模板属性。 可以使用属性语法引用资源中定义的样式,例如,<
对象Style="{StaticResource
myResourceKey}" .../>
。 也可以使用属性元素语法来定义嵌入式样式,例如:
<
对象>
<
对象.Style>
<
Style
.../>
</
对象.Style>
</
对象>
属性用法更为常见。 内联定义而未在资源中定义的样式只能应用于包含它的元素,因为它没有资源键,因此不能轻易重复使用。 通常,资源定义的样式更通用且有用,并且更符合将代码中的程序逻辑与标记设计分开的一般 Windows Presentation Foundation (WPF) 编程模型原则。
通常没有理由设置样式或模板内联,即使你只打算在该位置使用该样式或模板。 大多数可以采用样式或模板的元素也支持内容属性和内容模型。 如果仅使用通过样式或模板创建的任何逻辑树,那么仅用直接标记中的等效子元素填充该内容属性将会更容易。 这将完全绕过样式和模板机制。
由返回对象的标记扩展启用的其他语法也可用于样式和模板。 有两种可能的情况的扩展包括 TemplateBinding 和 Binding。