46

根据这个MSDN链接,

没有办法只替换控件的可视化树的一部分;要更改控件的可视化树,您必须将控件的 Template 属性设置为其新的完整 ControlTemplate

.

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

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

感谢您的关注。

4

6 回答 6

27

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

于 2016-08-10T13:38:02.080 回答
21

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

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

于 2010-08-23T14:28:54.123 回答
14

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


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

  • 命名模板部件
  • 视觉状态
  • 完整的 XAML 默认控件模板和资源
于 2012-11-30T07:57:22.883 回答
1

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

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

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

于 2020-04-07T14:59:19.297 回答
1

正如这篇博文所说,使用这段代码(调用一次)并读取输出文件(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。

于 2020-05-31T16:48:02.137 回答
0

对于 vs2022 社区:C:\Program Files\Microsoft Visual Studio\2022\Community\DesignTools\SystemThemes\

于 2022-02-14T13:10:07.817 回答