2017-05-12 2 views
1

Ich habe eine WPF-Anwendung, die 20 + Windows, von denen die meisten als Dialoge dienen, und ich möchte, dass sie alle die gleiche Hintergrundfarbe haben.Anwenden von Standard-Stil auf alle WPF-Fenster

Ich habe einen typisierten Stil für Fenster in einem Ressourcenverzeichnis definiert bekam als

<Style TargetType="{x:Type Window}"> 
    <Setter Property="SnapsToDevicePixels" Value="true"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Window}"> 
       <Grid Background="{StaticResource WindowBackgroundBrush}"> 
        <AdornerDecorator> 
         <ContentPresenter/> 
        </AdornerDecorator> 
        <ResizeGrip x:Name="WindowResizeGrip" HorizontalAlignment="Right" VerticalAlignment="Bottom" Visibility="Collapsed" IsTabStop="false"/> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="ResizeMode" Value="CanResizeWithGrip"> 
         <Setter TargetName="WindowResizeGrip" Property="Visibility" Value="Visible"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

ich das Wörterbuch enthalten haben folgt der Mittel für die Anwendung und jedes Fenster als

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/Resources/Resources.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

<Window.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/Resources/Resources.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Window.Resources> 
folgt

In Visual Studio sagt der Hintergrundpinsel im Eigenschaftseditor "Vererbung", aber der Wert sagt "Weiß". Ich sehe die gewünschte Hintergrundfarbe in Visual Studio, aber wenn ich die Anwendung ausführe, sehe ich immer noch einen weißen Hintergrund. Kann mir jemand erklären, was ich hier falsch mache? Der WindowBackgroundBrush wird korrekt auf andere Steuerelemente angewendet.

Hinweis, wenn ich den Stil vereinfachen nur

<Style TargetType="{x:Type Window}"> 
    <Setter Property="Background" Value="Aqua"/> 
</Style> 

Visual Studio zeigt den Hintergrund Pinsel als „Style Setter“ als Wert Quelle und zeigt den Aqua als Wertquelle zu sein, aber das Fenster ist immer noch weiß wenn die App startet.

+1

@EdPlunkett das ist das, was das '' Tag macht. – XAMlMAX

+0

@XAMlMAX Ich habe einen niedrigen IQ-Tag. Es tut uns leid! –

+0

@EdPlunkett np. Wir alle haben diese Tage ;-) – XAMlMAX

Antwort

0

Sie haben alles richtig gemacht. Es funktioniert bei mir ... Wie verwenden Sie Stil auf Fenster? Ich habe wie folgt angewendet.

<Window x:Class="WpfApplicationScratchpad.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:WpfApplicationScratchpad" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="350" Width="525" Style="{StaticResource Style1}"> 

hier Style1 ist Ihr Stil in Ressource Wörterbuch. mit dem Namen "Style1"

<Style x:Key="Style1" TargetType="{x:Type Window}"> 
     <Setter Property="WindowStyle" Value="None"/> 
     <Setter Property="AllowsTransparency" Value="True"/> 
     <Setter Property="SnapsToDevicePixels" Value="true"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Window}"> 
        <Grid Background="Beige"> 
         <AdornerDecorator> 
          <ContentPresenter/> 
         </AdornerDecorator> 
         <ResizeGrip x:Name="WindowResizeGrip" HorizontalAlignment="Right" VerticalAlignment="Bottom" Visibility="Collapsed" IsTabStop="false"/> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger Property="ResizeMode" Value="CanResizeWithGrip"> 
          <Setter TargetName="WindowResizeGrip" Property="Visibility" Value="Visible"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
+0

Ok, das funktioniert auch für mich. Ich hatte erwartet, dass das Fenster den Stil wegen seines Typs erben würde, so wie die Stile, die ich für andere Steuerelemente habe, die ich definiert habe, aber ich denke nicht. – user7134019

+0

Daumen hoch !!!!!! – Lina

Verwandte Themen