根据此MSDN链接,
没有办法只替换部分 对照的可视树;至 更改控件的可视树 你必须设置的Template属性 控制到它的新的和完整的 的ControlTemplate
我正在尝试禁用GridViewColumnHeader的点击行为(我需要删除原始控件模板中的一些触发器),但我无法找到本机“ColumnHeaderContainerStyle”。我发现的所有人似乎已经做了一些定制,很难获得原始的外观和感觉。
有人可以建议我如何/在哪里可以获得原生WPF控件中定义的原始控件模板?
感谢您的关注。
答案 0 :(得分:19)
在Visual Studio 2015(至少)中,您可以右键单击XAML设计器中的控件,然后选择"编辑样式 - >编辑副本"查看和编辑控件的默认模板。比打开Blend,下载样式查看器或搜索网络容易得多。
答案 1 :(得分:18)
您可以找到所有主题here at MSDN的模板。
(该链接应该直接带您到页面上的正确位置。整个页面加载后(可能需要几秒钟),“主题”部分应该在浏览器内容的顶部。)
编辑:上面的链接似乎不再有用了。请参阅in the post by McGarnagle给出的链接。
此外,有几种工具可以从装配中读取样式。例如,您可以使用Style Snooper。但是,对于您的方案(获取内置模板),上述MSDN链接应该是最简单的。
答案 2 :(得分:15)
我几次通过谷歌来到这个问题,看不到我想要的链接,所以这里是......
这些链接对于每个框架控件都有以下信息:
答案 3 :(得分:1)
长话短说,这似乎是当今的链接:
https://docs.microsoft.com/en-us/dotnet/framework/wpf/controls/button-styles-and-templates
(我从该页面复制了按钮的模板,确实确实是一个模板。)
答案 4 :(得分:0)
就像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);
}
}
我认为这是最好的方法。
无法通过Visual Studio调整提取诸如DataGridCell
之类的某些元素:Properties
> Template
> Convert to New Resource...
,因为您不能显式定义任何DataGridCell。