如何/在哪里找到WPF控件的Microsoft默认样式?

12

我想改变控件的样式,但基本上想要复制默认样式的一部分。有人知道如何找出控件的默认样式吗?

在我的情况下,我希望使DataGrid中的列标题在鼠标悬停时变成蓝色,就像行标题一样。


1
可能是在WPF中为现有控件创建控件模板的重复问题。 - H.B.
2个回答

9
你可以在MSDN网站上找到一些非常接近默认样式的模板。
另一个选择是获取Expression Blend并使用它来复制默认样式,但是Blend不是免费的。

你提供的链接似乎并没有默认样式。它提供了如何设置样式(至少对于DataGrid)的示例,但这不是默认值。我有Blend的副本,我该如何使用Blend来获取DataGrid模板的副本? - KrisTrip
1
该链接包含默认模板,但是DataGrid中显示的颜色是自定义的,不像通常情况下从主题特定的颜色中提取。您需要自己设置它们。如果您只对DataGrid的一部分进行样式设置,我建议您查看此链接,或者您可以使用此页面(名称不太好)来查看使用Blend制作样式副本的示例。 - Rachel
有没有想法默认颜色是什么?它们是否在某个地方列出? - KrisTrip
3
根据所使用的主题和操作系统设置,它们可能会有所不同。但是,您可以在此处找到标准主题的颜色参考:http://blogs.msdn.com/b/wpf/archive/2010/11/30/systemcolors-reference.aspx。您可以通过以下语法将颜色绑定到系统画刷:"Foreground="{x:Static SystemColors.ControlTextBrush}"。" - Rachel
1
今天在Visual Studio 2013社区版中,Blend是免费的。 - white.zaz

6
与Rachel所说的相反,她提供的链接并没有提供默认模板。
我曾使用System.Windows.Markup.XamlWriter.Save(myObject.Template)来查看默认模板,发现它们与该网站显示的完全不同。

你说得对,我发的第一个链接并不是完全的默认设置,但是对于大多数情况来说,我认为它们非常接近。我已经更新了我的答案以澄清这一点,谢谢 :) - Rachel
经过长时间的搜索,这是唯一适用于ToggleButton的方法。即使是XAML设计师的(右键组件) > 编辑模板 > 复制编辑功能也会提供一个糟糕的模板(切换按钮无法切换)。谢谢! - Vimes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接