Laden...

WPF Controls Style

Erstellt von Steffen2012 vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.823 Views
S
Steffen2012 Themenstarter:in
70 Beiträge seit 2012
vor 10 Jahren
WPF Controls Style

Hallo zusammen,

ich möchte gerne mehrere WPF Controls(Buttons, Statusbar etc.) mit der Eigentschaft Background in der Farbe Schwarz versehen. Jetzt hab ich mich mal bisschen umgesehen und bin dabei auf folgendes Beispiel:


<Window.Resources>
        <Style TargetType="StatusBar">
            <Setter Property="Background" Value="Black"/>
        </Style>       
    </Window.Resources>

Klappt auch soweit. Kann ich es aber so einrichten das ich sage das ALLE Controls in meinem Programm die Farbe Schwarz haben ,oder muss ich für jedes Control einen neuen Style aufrufen ?

Grüße

709 Beiträge seit 2008
vor 10 Jahren

Hallo Steffen2012,
setz als TargetType mal Control.

Gruß
pinki

S
Steffen2012 Themenstarter:in
70 Beiträge seit 2012
vor 10 Jahren

Danke für die Antwort 😃. allerdings tut sich da gar nichts. Die Controls behalten ihre ursprüngliche Farbe bei.

S
Steffen2012 Themenstarter:in
70 Beiträge seit 2012
vor 10 Jahren

<Window.Resources>
        <Style x:Key="BaseStyle" TargetType="{x:Type Control}">
            <Setter Property="Background" Value="Black"/>
        </Style>
    </Window.Resources>


    <Grid>
        <Grid.Background>
            <ImageBrush ImageSource="Images\Other\997_neu.png" Stretch="UniformToFill" />
        </Grid.Background>

        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition />
            <RowDefinition />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>

        <Ribbon Grid.ColumnSpan="3" Style="{StaticResource BaseStyle}" >


        <StatusBar Grid.Row="3" Grid.ColumnSpan="3" Height="23" Style="{StaticResource BaseStyle}">
        </StatusBar>
    </Grid>

Hab da noch was gefunden.Diese Lösung funktioniert soweit. Aber gibt es vll. noch eine kürzere Variante. Quasi global festlegen das es für alle Controls automatisch übernommen wird.

2.207 Beiträge seit 2011
vor 10 Jahren

Hallo Steffen2012


    <Style x:Key="MyControlDefault" TargetType="{x:Type Control}">
        <Setter Property="Background" Value="Black" />
    </Style>

Gruss

Coffeebean

Edit: Mist, zu spät 😉

P
660 Beiträge seit 2008
vor 10 Jahren

Hallo,

Du kannst Bei den einzelnen Controls (also die von Control erben) folgendes sagen:


<Grid><Grid.Resources>
<Style x:Key="FontSize16" TargetType="{x:Type Control}" >
			<Setter Property="FontSize" Value="16"/>
		</Style>
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource FontSize16}" />
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource FontSize16}" />
</Grid></Grid.Resources>

So musst du nicht z.b. bei jeder StatusBar den Style angeben.

Ich stand letztens auch vor dem selben Problem, fand aber heraus dass man Control an sich nicht als
targetType verwenden kann, jedenfalls führt das nicht direkt zum gewollten ergebnis.

MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden! *"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht." *"Ignorance simplifies ANY problem." *"Stoppt die Piraterie der Musikindustrie"

5.742 Beiträge seit 2007
vor 10 Jahren

Hallo Steffen2012,

Kleine ergänzung: um den Style wirklich global verfügbar zu machen, kannst du ihn entweder in die Resourcen der App.xaml legen oder ein Theme verwenden, wie in http://www.microsoft.com/germany/msdn/solve/knowhow/howto/cliententwicklung/WieThemeIchEineWPFAnwendung.aspx gezeigt.