WPF样式的问题

时间:2016-02-23 12:47:08

标签: wpf xaml

我想知道是否有人可以提供帮助,我正在为我正在处理的应用程序设计一个自定义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)

但就像我上面说的那样,我已经删除了绑定并指定了一个物理值但仍然没有显示内容

2 个答案:

答案 0 :(得分:3)

在按钮的模板中使用ContentPresenter代替ContentControl。 (你应该在这样的问题中包含按钮的控制模板......它可能具有高度相关性。)

答案 1 :(得分:1)

由于我也是WPF的初学者,并试图理解事情是一个学习曲线,我想提供一些以前发布的链接。

首先是creating simple label的一个简单样式,并且所有标签都作为默认设置采用此格式,而没有明确的样式分配。

显示creation of a custom button的另一个示例。这是我一步一步创建自定义类并应用样式来显示/隐藏按钮上的图像。

也许按钮链接和样式声明也可以帮助您找到按钮着色问题。