我想知道是否有人可以提供帮助,我正在为我正在处理的应用程序设计一个自定义WPF窗口,我遇到了Min,Max和Close按钮的问题。我为3个按钮设计了一个ControlTemplate
,它们位于StackPanel
方向Vertical
。在我的基本风格中,我有以下
<Style x:Key="BaseWindowButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Foreground" Value={Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground)}" />
<Setter Property="Background" Value="Transparent" />
...
</Style>
还尝试将Foreground设置为特定颜色,例如#FF000000
,并且不显示任何内容
我有一种样式,它继承了按钮的这种风格,但不会改变前景或背景。
我的问题是按钮内容没有显示,按钮显示,IsMouseOver
触发器触发,这会改变背景,但文本内容永远不会显示。
最小按钮样式是
<Button x:Name="PART_Min">
<Path Fill="{Binding Path=Foreground, RelativeSource={RelativeSource AncestorType={x:Type Button}}}"
Data="F1M0,6L0,9 9,9 9,6 0,6z"
SnapsToDevicePixels=True" />
</Button>
我不知道为什么内容没有显示,所以会很感激你的想法。
下面是Visual Tree,我已经检查了这一点并确定了前景值
Window (Foreground: #FF000000)
Grid
AdornerDecorator
Grid
ContentControl (Foreground: #FF000000)
StackPanel
Button (Foreground: #FF000000)
Grid
ContentControl (Foreground: #FF000000)
但就像我上面说的那样,我已经删除了绑定并指定了一个物理值但仍然没有显示内容
答案 0 :(得分:3)
在按钮的模板中使用ContentPresenter
代替ContentControl
。 (你应该在这样的问题中包含按钮的控制模板......它可能具有高度相关性。)
答案 1 :(得分:1)
由于我也是WPF的初学者,并试图理解事情是一个学习曲线,我想提供一些以前发布的链接。
首先是creating simple label的一个简单样式,并且所有标签都作为默认设置采用此格式,而没有明确的样式分配。
显示creation of a custom button的另一个示例。这是我一步一步创建自定义类并应用样式来显示/隐藏按钮上的图像。
也许按钮链接和样式声明也可以帮助您找到按钮着色问题。