重用内置WPF样式

时间:2009-03-07 11:38:24

标签: wpf templates styles built-in

如何访问WPF的内置样式/模板?

例如,我正在尝试将NavigationWindow的chrome移动到窗口的底部。我见过微软的NavigationWindow template example,但它非常冗长,并没有重复使用默认的导航镶边。

我也试过看看Snoop里面的树。所有的chrome都包含在名为“NavChrome”的网格元素中,但我可以找到它的任何引用。似乎没有任何匹配它的“PART_xyz”。

对于CTP,有些人提到使用“PFThemeNavigationWindowNavigationButtonForwardButtonStyle”等按钮样式,但这似乎不再适用。

那么,是否可以访问这些内置样式?在其他地方重复使用它们会很好!

谢谢!


编辑:saldoukhov的答案非常有用,但有没有办法在不需要复制所有XAML的情况下执行此操作?它对我来说似乎不是一种非常DRY的方式。

2 个答案:

答案 0 :(得分:5)

我通常在Expression Blend中这样做。选择控件 - >右键单击 - >编辑控制部件(模板) - >编辑副本...

然后这取决于你想做什么。如果您很幸运,并且您正在编辑的模板包含对更改密钥的引用,您可以获得所需的效果,那么您可以使用此密钥创建自己的资源,他们将“覆盖”模板中的资源,在这种情况下,您不需要随身携带完整的模板。但更常见的是,您需要更改模板周围的一些内容,因此您只需将其提取到自己的资源中并开始随身携带。

答案 1 :(得分:3)

不是你问题的答案,而是一点提示: 除了saldoukhov的答案,如果你没有Expression Blend,你也可以使用XamlPadX(http://blogs.msdn.com/llobo)来访问内置样式。