WPF中现有控件的控件模板

如何在WPF中以XAML格式(可视化树)获取现有控件的控件模板? 这有助于在现有模板的帮助下创建新的控制模板。

样式和模板示例在MSDN上可供下载,请参阅Default WPF Themes链接 。

但是,您也可以扩展现有样式,而不使用BasedOn属性重新定义所有内容。

退房StyleSnooper :

http://www.blogs.intuidev.com/image.axd?picture=2010/5/StyleSnooper_TN.png

它将为内置的控件转储标准样式(因此也是模板)。 您也可以加载包含WPF控件的特定DLL,并查看这些默认样式。

如果您有Expression Blend,您可以:

  1. 将控件拖到设计图面上
  2. 右键单击控件,然后选择编辑模板 – >编辑复制

当你这样做时,Blend将从控件中提取基本模板,并在文档/应用程序中明确声明它作为一个资源,然后可以根据自己的喜好进行编辑。 你可以做任何控制。

第15章中的“Matthew MacDonald编写的C#2008中的临WPF”一书中包含了一个控制模板浏览器。我相信您可以简单地从Apress网站下载示例代码。

你可以使用像ShowMeTheTemplate这样的工具

使用Microsoft Blend:在工具中将整个XAML代码粘贴到文件中,然后右键单击要感知的可视化树的控件:

选择选项:编辑模板,然后你去

XamlWriter类为您提供此功能。 如果controlName是一个控件的名称,然后使用下面的代码片段,你可以在控件的模板的stringBuilder对象中获得Xaml。 我猜测答案中提到的工具利用这个类。

 var stringBuilder = new StringBuilder(); var xmlSettings = new XmlWriterSettings { Indent = true }; using (var xmlWriter = XmlWriter.Create(stringBuilder, xmlSettings)) { XamlWriter.Save(controlName.Template, xmlWriter); }