Silverlight 样式和控件模板之间的差异

Silverlight 样式和控件模板之间的差异,silverlight,Silverlight,我想知道样式(控件)和控件模板之间的区别。 致以最良好的祝愿 Gonzalo样式控制控件的各个属性。例如,按钮样式可以说:“对于每个按钮,使用此背景。”样式更改控件上的单个属性 控件模板实际上是在处理控件如何显示其绑定数据。您没有说“我想重写控件的属性”,而是将其他较小的控件组合到一个可以显示绑定数据的不同视图的控件中 以前在WinForms中,如果要编写自定义列表框(假设每个项旁边都有一个图标),则必须从ListView控件继承并重写绘制方法。这需要大量的实验——巨大的痛苦。使用WPF模板,您

我想知道样式(控件)和控件模板之间的区别。 致以最良好的祝愿


Gonzalo

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

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

以前在WinForms中,如果要编写自定义列表框(假设每个项旁边都有一个图标),则必须从ListView控件继承并重写绘制方法。这需要大量的实验——巨大的痛苦。使用WPF模板,您可以使用XAML一起构造较小的控件,并将它们绑定到父控件的不同属性。实际上,您正在为控件定义可视树


有关查尔斯·佩佐尔德的深入解释,请参阅文章。

想象你的控制是一座房子

风格
在概念上类似于铺设新地毯并粉刷墙壁。房子本身还是一样,但外观不同

ControlTemplate
相当于拆掉一堵墙或增加一个温室。房子的实际结构已经改变了

当您想要更改控件的外观时(例如,控件的背景色或边框的厚度),请使用
样式


当需要更改控件的底层结构时,请使用
ControlTemplate
。当您想要更改控件某些方面的布局时,这非常有用。文章中有一个很好的例子,它将
TabControl
重新模板化,使其看起来像Microsoft Outlook中的导航器。

您好,非常感谢您的详细解释和文章链接。我会尽快看一看。