【问题标题】:Where can i find the default WPF Control templates?在哪里可以找到默认的 WPF 控件模板?
【发布时间】:2011-04-02 16:13:55
【问题描述】:

根据这个MSDN链接,

没有办法只替换部分 控件的可视化树;到 更改控件的可视化树 您必须设置的模板属性 控制到新的和完整的 控制模板

.

我正在尝试禁用 GridViewColumnHeader 的单击行为(我需要删除原始控件模板中的一些触发器),但我无法找到本机的“ColumnHeaderContainerStyle”。我发现的所有这些似乎都已经进行了一些定制,很难获得原始的外观和感觉。

有人可以建议我如何/在哪里可以获得原生 WPF 控件中定义的原始控件模板吗?

感谢您的关注。

【问题讨论】:

标签: wpf styles controltemplate gridviewcolumn


【解决方案1】:

您可以在Microsoft Docs 找到所有主题的模板。

此外,还有一些工具可以从程序集中读取样式。
例如,您可以使用Style Snooper
但是,对于您的场景(获取内置模板),上述文档链接应该是最简单的。

【讨论】:

  • Blend 也可以提取默认值。
  • Style Snooper 链接不再是最新的。
  • 所有这些链接都不再起作用了,但是您可以在 Visual Studio 目录下的开发框上找到模板(对我来说,它是:C:\Program Files (x86)\Microsoft Visual Studio 14.0\DesignTools\SystemThemes\Wpf\aero2.normalcolor.xaml)。
【解决方案2】:

我通过谷歌几次到达这个问题,并没有看到我想要的链接,所以在这里......


这些链接包含每个框架控件的以下信息:

  • 命名模板部分
  • 视觉状态
  • 完整的 XAML 默认控件模板和资源

【讨论】:

  • WPF 链接已损坏
  • 这些只是示例——它们不反映默认样式,它们只涵盖了大部分。你会注意到按钮的颜色是蓝色的,这不是 WPF 中按钮的默认颜色。
  • 如果你正在寻找 WPF,试试这个:msdn.microsoft.com/en-us/library/aa970773(v=vs.110).aspx
  • Corin,这些不是标准值
  • 看起来链接又被破坏了(澄清一下,页面已加载,但选择其中一个控件来查看数据会将您带到 404 页面)。 -- @MikeNakis 在下面的回答有效。
【解决方案3】:

在 Visual Studio 2015(至少)中,您可以右键单击 XAML 设计器中的控件并选择“编辑样式->编辑副本”以查看和编辑控件的默认模板。比打开 Blend、下载样式查看器或搜索网络要容易得多。

【讨论】:

  • 这是我一直在寻找的答案。将控件放在visual xaml设计器中,右键单击并转到“编辑模板->编辑副本...”
  • 这对我不起作用。是的,我得到了一些“默认”,但这不是我在 Windows 10 机器上看到的!
  • 顺便说一句:当我在 Blend 中执行此操作时,我得到了正确的默认模板!
  • 当您“编辑副本”时,它会创建当前样式的副本。在选择“编辑副本”之前,我只是简单地注释掉了该样式以使用默认模板。
【解决方案4】:

长话短说,这似乎是现在的链接:

https://docs.microsoft.com/en-us/dotnet/framework/wpf/controls/button-styles-and-templates

(我从那个页面复制了按钮的模板,它确实似乎是那个。)

【讨论】:

  • 确认在发表此评论之日有效。感谢您发布此信息。 ??
【解决方案5】:

正如this blog post 所说,使用此代码(调用一次)并读取输出文件(defaultTemplate.xml):

public static void SaveDefaultTemplate()
        {
            var control = Application.Current.FindResource(typeof(DataGridCell));
            using (XmlTextWriter writer = new XmlTextWriter(@"defaultTemplate.xml", System.Text.Encoding.UTF8))
            {
                writer.Formatting = Formatting.Indented;
                XamlWriter.Save(control, writer);
            }
        }

在我看来,这是最好的方法。 DataGridCell 等一些元素无法通过 Visual Studio 调整提取:Properties>Template>Convert to New Resource...,因为您无法显式定义任何 DataGridCell。

【讨论】:

    猜你喜欢
    • 2022-07-19
    • 1970-01-01
    • 2014-08-08
    • 2011-11-06
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 2011-09-01
    相关资源
    最近更新 更多