Neil Stevens
Neil Stevens

Reputation: 3904

Issue with WPF styles

I wonder if someone can help, I am designing a custom WPF window for an application i am working on and I have an issue with the Min, Max and Close buttons. I have designed a ControlTemplate for the 3 buttons and they are in a StackPanel with Vertical orientation. In my base style I have the following

<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>

Have also tried setting the Foreground to a specific color such as #FF000000 and nothing displays

I have a style that inherits this style for the buttons but does not change the foreground or background.

My problem is that the button content does not display, the button displays and the IsMouseOver trigger fires which changes the background but the textual content never displays.

The Min button style is

<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>

I am at a loss as to why the content does not display so would appreciate your thoughts.

The Visual Tree is below, I have examined this and identified the Foreground values

Window (Foreground: #FF000000)
  Grid
    AdornerDecorator
      Grid
        ContentControl (Foreground: #FF000000)
          StackPanel
            Button (Foreground: #FF000000)
              Grid
                ContentControl (Foreground: #FF000000)

But like I said above I have removed the binding and specified a physical value and still do not get the content displaying

Upvotes: 0

Views: 125

Answers (2)

Guttsy
Guttsy

Reputation: 2119

Use ContentPresenter instead of ContentControl in your button's template. (You should include the button's control template in a question like this... it's potentially highly relevant.)

Upvotes: 3

DRapp
DRapp

Reputation: 48129

As I too was a beginner with WPF, and trying to understand things was a bit of a learning curve, I would like to offer a few previous links posted out here.

First a simple style for creating simple label and having all labels as a default take on this format without explicit style assignments.

Another sample showing creation of a custom button. This is where I went step by step to create a custom class and apply a style to it to show/hide image on a button.

Maybe the button link and style declaration will help you find your button coloring issues too.

Upvotes: 1

Related Questions