【问题标题】:How to grab WPF 4.0 control default templates? [duplicate]如何抓取 WPF 4.0 控件默认模板? [复制]
【发布时间】:2011-04-01 09:08:56
【问题描述】:

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

【问题讨论】:

    标签: wpf wpf-controls


    【解决方案1】:

    XamlPadX 有一个“打开/关闭样式窗口”按钮,它显示了一个小对话框,可让您查看样式。

    【讨论】:

    • 很遗憾,XamlPadX 尚未针对 WPF 4.0 进行更新。它没有任何新控件,例如日历。
    【解决方案2】:

    在 WPF 的早期版本中,样式可在此 MSDN 链接中找到。您可以尝试更改为旧版本,以查看下载链接。不幸的是,这还没有针对 .NET 4.0 进行更新。

    在此之前,如果您可以将 Reflector 与 BamlViewer 插件一起使用。安装后,您将使用 Open Cache 打开这些程序集之一:

    1. PresentationFramework.Aero
    2. PresentationFramework.Classic
    3. PresentationFramework.Luna
    4. PresentationFramework.Royale

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

    编辑:

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

    【讨论】:

      【解决方案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);
      

      【讨论】:

        【解决方案4】:

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

        但是,您可以使用Style.BasedOn 属性扩展或覆盖控件模板,而无需复制原始模板。在this blog post中有解释。

        【讨论】:

          【解决方案5】:

          请看这篇文章:http://eggheadcafe.com/tutorials/aspnet/d1ad0a33-d815-4083-8e97-c234fd661095/wpf-controls-default-style-or-template-by-extending-the-wpf-designer-in-visual-studio-2010.aspx。我扩展了 WPF 设计器,包括通过所选控件的上下文菜单获取默认样式或模板。只需构建 Visual Studio 解决方案并设置注册表项以加载元数据。缺点是 XAML 格式与 Expression Blend 不同。

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

              猜你喜欢
              • 2014-08-08
              • 1970-01-01
              • 1970-01-01
              • 2012-02-08
              • 2011-10-09
              • 2011-04-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多