【发布时间】:2013-03-26 10:54:19
【问题描述】:
我们希望设置 wpf 按钮的样式,以便按钮中设置的内容显示两次。这样做的原因是我们要实现按钮内容的投影效果。当时的想法是在 Button 样式中有两个 ContentControl,如下所示:
<ContentControl x:Name="ContentControl" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
<ContentControl Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Foreground="White" Margin="0,1,0,0" />
所以,一个 ContentControl 用于显示真实的内容,一个 ContentControl 用于显示相同的内容并留有一点边距,这样它就可以产生投影效果。问题是它没有在两个内容控件中显示内容。其中只有一个显示内容。如何在两个内容控件中成功显示内容?
此外,阴影效果也不是一个选项,因为按钮的内容变得模糊。
感谢您的帮助!
【问题讨论】:
-
第二个 ContentControl 没有 ContentTemplate 绑定,您应该始终绑定 ContentTemplateSelector,相信我,这将为您省去很多烦人的 bug 搜索。您还应该阅读 ContentPresenter 及其在 ContentControls 中的使用。
-
感谢您的回复。我知道在模板中使用 ContentPresenter 和 ContentControl 是有区别的。我在这里使用 contentControl 的原因是能够设置 contentControl 的 Foreground 属性。这样我可以根据 VisualState(按下按钮等)控制前景。 ContentPresenter 没有前景属性。 ContentTemplate 没有任何区别,使用 2 个 ContentPresenters 也无济于事。
标签: wpf button styles contentcontrol