如何获取WPF 4.0控件的默认模板?

10

我一直在使用Expression Blend来复制WPF 4.0控件的默认模板。我正在撰写一篇关于扩展WPF控件的CodeProject文章,我想推荐一个免费工具作为替代品。你会有什么建议吗?感谢你的帮助。

我建议您考虑使用Visual Studio中的"Edit Template"功能来编辑WPF控件的默认模板,这是一个免费的工具,可以方便地扩展和定制控件的外观和行为。此外,还可以考虑使用XAML Spy或Snoop等工具来调试和分析WPF应用程序的UI层。
6个回答

8

XamlPadX有一个名为“打开/关闭样式窗口”的按钮,点击后会弹出一个小对话框,允许您查看样式。

alt text


很遗憾,XamlPadX没有针对WPF 4.0进行更新。它没有任何新的控件,比如日历控件。 - David Veeneman

5
在之前的WPF版本中,样式可以在MSDN链接中找到。你可以尝试切换到旧版本,查看下载链接。不幸的是,这个链接还没有更新到.NET 4.0。
在那之前,如果你能使用带有BamlViewer插件的Reflector就可以了。安装完插件后,打开其中一个程序集,然后使用Open Cache打开:
  1. PresentationFramework.Aero
  2. PresentationFramework.Classic
  3. PresentationFramework.Luna
  4. PresentationFramework.Royale
确保选择4.0.0.0版本。然后展开程序集和相关资源节点。选择资源条目,按下空格键即可查看反汇编器。然后你就可以看到BAML文件,使用BamlViewer查看XAML。唯一的缺点是你会失去原始格式。
编辑:
.NET 4样式可以从这里下载。更具体地说,在第二段中的默认WPF主题链接。或者,你可以深入控件以查看样式示例。

3

MSDN列出了Silverlight控件的模板:
http://msdn.microsoft.com/en-us/library/cc278069(VS.95).aspx

但我找不到类似的WPF控件列表。对应的WPF页面是这个,神秘地缺少一个模板列表:
http://msdn.microsoft.com/en-us/library/ms753328.aspx

不过,获取模板很容易。从这里开始:
http://msdn.microsoft.com/en-us/magazine/cc163497.aspx#S1

Control ctrl = GetControl(); // any type deriving from Control

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = new string(' ', 4);
settings.NewLineOnAttributes = true;
StringBuilder strbuild = new StringBuilder();
XmlWriter xmlwrite = XmlWriter.Create(strbuild, settings);

// Save the template to the XAML writer
XamlWriter.Save(ctrl.Template, xmlwrite);

3

现在可以在这里找到WPF 4.0控件的控制模板。

然而,您可以使用Style.BasedOn属性扩展或覆盖控制模板,而无需重现原始模板。这在这篇博客文章中有详细解释。


0

或者安装Expression Blend(试用版),并转到以下位置:

C:\Program Files\Microsoft Expression\Blend 4\SystemThemes\Wpf

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接