样式和控件模板之间的区别

时间:2010-02-24 17:32:42

标签: silverlight

我想知道Style(用于控件)和控件模板之间的区别。 最好的问候,

的Gonzalo

2 个答案:

答案 0 :(得分:6)

样式控制控件的各个属性。例如,按钮样式可以说“对于每个按钮,使用此背景”。样式正在更改控件上的单个属性。

控件模板实际上是处理控件如何显示其绑定数据。您没有说“我想覆盖控件的属性”,而是将其他较小的控件组合到一个控件中,该控件可以显示绑定数据的不同视图。

以前在WinForms中,如果你想编写一个自定义列表框(比如每个项目旁边都有一个图标),你必须继承ListView控件并覆盖绘制方法。这涉及大量的实验 - 巨大的痛苦。使用WPF模板,您可以使用XAML一起构造较小的控件并将它们绑定到父控件的不同属性。您实际上是为控件定义了Visual Tree。

请参阅this文章,了解Charles Petzold的深入解释。

答案 1 :(得分:3)

想象一下你的控制权是一所房子。

Style在概念上类似于放下新地毯并在墙壁上绘画。房子本身仍然是相同的,但它的外观是不同的。

ControlTemplate相当于敲墙或增加温室。房子的实际结构已经改变。

如果要更改控件E.G的外观,请使用Style。它的背景颜色或边框的厚度。

当您需要更改控件的基础结构时,请使用ControlTemplate。当您想要更改控件某些方面的布局时,这非常有用。一个很好的例子是在this文章中,它将TabControl重新模板化为类似于Microsoft Outlook中的导航器。