如何获取WPF4.0控件默认模板?

如何获取WPF4.0控件默认模板?,wpf,wpf-controls,Wpf,Wpf Controls,我一直在使用Expression Blend复制WPF 4.0控件的默认模板。我正在写一篇关于扩展WPF控件的CodeProject文章,我想推荐一个免费的工具作为替代。你有什么建议?感谢您的帮助。MSDN为Silverlight控件列出了它们: 但我找不到WPF控件的类似列表。相应的WPF页面是这样的,并且神秘地缺少一个模板列表: 无论如何,抓取模板很容易。从这里开始: 有一个按钮“打开/关闭样式窗口”,显示一个小对话框,允许您查看样式 请看一下这篇文章:。我已经扩展了WPF设计器,包括

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

MSDN为Silverlight控件列出了它们:

但我找不到WPF控件的类似列表。相应的WPF页面是这样的,并且神秘地缺少一个模板列表:

无论如何,抓取模板很容易。从这里开始:

有一个按钮“打开/关闭样式窗口”,显示一个小对话框,允许您查看样式


请看一下这篇文章:。我已经扩展了WPF设计器,包括通过所选控件的上下文菜单获取默认样式或模板。只需构建VisualStudio解决方案并设置注册表项以加载元数据。缺点是XAML格式与Expression Blend不同。

在以前版本的WPF中,可通过此链接获得样式。您可以尝试更改为旧版本,以查看下载链接。不幸的是,这还没有为.NET 4.0更新

在此之前,如果您可以将Reflector与插件一起使用的话。安装后,您将使用open Cache打开其中一个程序集:

  • PresentationFramework.Aero
  • PresentationFramework.Classic
  • PresentationFramework.Luna
  • 呈现框架
  • 确保选择4.0.0.0版本。然后展开程序集和关联的资源节点。选择资源条目并按空格键以查看反汇编程序。然后可以看到BAML文件,您可以使用BamlViewer查看XAML文件。唯一的缺点是丢失了原始格式

    编辑:


    NET 4样式可从下载。更具体地说,是第二段中的链接。或者,您可以深入特定控件以查看样式示例。

    现在可以找到WPF 4.0控件的控件模板


    但是,通过使用
    Style.BasedOn
    属性,可以扩展或重写控件模板,而无需复制原始模板。有关说明,请参见。

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

    C:\ProgramFiles\Microsoft Expression\Blend 4\SystemThemes\Wpf
    
    不幸的是,XamlPadX尚未针对WPF 4.0进行更新。它没有任何新控件,例如日历。
    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);