如何仅修改 Expander 按钮背景? WPF
我在蓝色背景的窗口上放置了一个扩展器,我想将扩展器的按钮设置为默认颜色之外的另一种颜色(蓝色,它从窗口接收)。 当我修改扩展器的背景属性时,它会将整个扩展器、标题和所有内容更改为新颜色。 但是,我只想更改按钮本身。 有人能指出我正在寻找的合适房产吗? 谢谢
I have an Expander placed on a window with a blue background and I would like to make the button for the expander another color than the default (blue, which it is receiving from the window). When I modify the background property of the expander it changes the entire expander, header and all to the new color. However, I would like only the button itself to change. Could anyone point me to the right property that I am looking for?
Thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不仅需要重新模板化 Expander ...您还需要重新模板化 Expander 模板中的 ToggleButton ...以便您可以将 Expander 上设置的背景画笔模板一直向下绑定到Expander 的视觉效果和 ToggleButton 的视觉效果(使用两个 TemplateBindings)。
当您学习如何修改 WPF 控件的视觉效果时,有帮助的一件事(至少对我来说)是使用 SimpleStyles,因为它们比成熟的普通样式和样式更容易复制和修改...... 模板。
为此,请打开 Blend 并进入资源库(最底部的工具)...如果单击它,您将看到两组控件:系统控件和简单样式。 从“简单样式”中选取一个控件(无论您想要哪个)并将其放在设计表面上。 然后,您可以右键单击它,编辑控制部件(模板),然后编辑副本。 这将创建简单样式样式和模板的副本...然后您可以(更轻松地)将其修改为您想要的内容。
(我应该注意这一点,然后我将在 Visual Studio 和 Blend 中修改该 xaml(由 Blend 生成)...根据需要来回翻转...并利用每个的优点:Blend 的所见即所得设计界面...以及 Visual Studio 的代码编辑和 IntelliSense 支持。)
我已经起草了一些快速的 xaml,它可以满足您的要求,并将其包含在下面。 您应该能够将此 xaml 放入 Kaxaml 或其他松散的 xaml 编辑器中。
希望这可以帮助。
You not only have to retemplate the Expander ... you need to retemplate the ToggleButton within the Expander's template ... so that you can template bind the Background brush set on the Expander all the way down through the Expander's visuals and into the ToggleButton's visuals (using two TemplateBindings).
One thing that is helpful (at least for me) when you are learning how to modify the visuals of the WPF controls is to use the SimpleStyles as these are much easier to copy and modify ... than the full fledged, normal styles & templates.
To do this, open up Blend and go into the Asset Library (the bottom most tool) ... if you click on that you will see two sets of controls: System Controls and Simple Styles. Grab one of the controls (whichever one you want) from the Simple Styles and plunk it down on the design surface. Then, you can right click on it, Edit Control Parts (Template), and Edit a Copy. This will create a copy of the Simple Styles style and template ... which you can then (more easily) modify to your hearts content.
(I should note at this point that I would then modify that xaml (generated by Blend) in both Visual Studio and Blend ... flipping back and forth as necessary ... and taking advantage of the strengths of each: Blend for its WYSIWYG design surface ... and Visual Studio for its code editing and IntelliSense support.)
I have drafted up some quick xaml that does what you are asking and will include it below. You should be able to drop this xaml in Kaxaml or another loose xaml editor.
Hope this helps.