WPF中现有控件的控件模板

时间:2009-10-13 10:03:51

标签: .net wpf controltemplate

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

8 个答案:

答案 0 :(得分:34)

结帐StyleSnooper


(来源:intuidev.com

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

答案 1 :(得分:30)

样式以及模板示例已上架on MSDN以供下载,请参阅Default WPF Themes link

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

答案 2 :(得分:15)

如果你有Expression Blend,你可以:

  1. 将控件拖到设计图面上
  2. 右键单击该控件,然后选择“编辑模板” - >编辑副本
  3. 执行此操作时,Blend将从控件中提取基本模板,并在文档/应用程序中将其显式声明为资源,然后您可以根据自己的喜好进行编辑。您可以为任何控件执行此操作。

答案 3 :(得分:3)

Matthew MacDonald撰写的“Pro WPF in C#2008”,第15章包含一个控制模板浏览器。我相信您只需从Apress网站下载示例代码即可。

答案 4 :(得分:2)

2020更新:

WPF组件的所有样式和模板现在都已移动here
但是,在创建新组件之前,只需检查this来查看是否有替代方案(也许改变样式就可以了)。
注意:通常,它具有一堆DynamicResource绑定,您可能希望将其替换为静态绑定。如果您不想做很多手动工作,则可以考虑使用下面的第二种解决方案。

第二种较短的解决方案可能是使用Microsoft Blend通过以下步骤extract模板:

右键单击控件> Edit Template> Edit CurrentEdit a Copy

但是请小心,因为它并不总是导出整个模板,
但这是必不可少的部分。
只需考虑将此模板与上面提到的官方模板进行比较,以确保一切正常。

答案 5 :(得分:1)

您可以使用ShowMeTheTemplate

之类的工具

答案 6 :(得分:1)

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

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

答案 7 :(得分:0)

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);
}