2016-07-28 27 views
0

Ich versuche, einen globalen Stil auf alle ComboBoxes in meiner Anwendung anzuwenden. Dazu definiere ich einen Style in meiner App.xaml-Datei und gebe einen TargetType an, der diesen Style auf alle Steuerelemente des angegebenen Typs anwenden soll. Es scheint jedoch, dass mein Stil überhaupt nicht angewendet wird.Anwenden globaler Stile auf Combobox

Hier ist mein Code:

App.xaml

<Application x:Class="Test.App" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:local="clr-namespace:Test" 
      StartupUri="MainWindow.xaml"> 
    <Application.Resources> 
     <ResourceDictionary> 
      <Style TargetType="{x:Type ComboBox}"> 
       <Setter Property="Background" Value="Red"></Setter> 
      </Style> 
     </ResourceDictionary> 
    </Application.Resources> 
</Application> 

MainWindow.xaml

<Window x:Class="Test.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:Test" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <ComboBox Margin="173,130,186,166"></ComboBox> 
    </Grid> 
</Window> 

Ich habe kein Code-behind an dieser Stelle anders als die Standardcode, den VS für WPF-Formulare generiert.

Ich erwarte, dass dieser XAML-Code den Hintergrund aller ComboBoxen in jedem Fenster in rot ändert, ohne dass ich den Stil für jede ComboBox manuell festlegen muss. (Ich möchte wirklich nicht manuell für jede ComboBox schreiben - meine App wird am Ende viele, viele CBs verwenden und es wäre ein großer Schmerz - nicht zu erwähnen, es sieht überladen.)

Ich habe versucht, mein Modell Code nach this question, aber keine Ergebnisse erhalten.

Antwort

0

Versuchen Sie, das verschachtelte ResourceDictionary in der App.Xaml zu vermeiden. Fix auf diese Weise:

<Application.Resources> 
    <Style TargetType="{x:Type ComboBox}"> 
     <Setter Property="Background" Value="Red"></Setter> 
    </Style> 
</Application.Resources> 
+0

Danke für Ihre Antwort. Leider scheint es nichts anderes zu tun, nachdem ich das '' -Tag entfernt habe, wie Sie es getan haben. –

0

würde ich vorschlagen, einen Ordner in Ihrer Lösung zu erstellen und in eine XAML-Steuerelement hinzufügen: ResourceDictionary wo Sie gonna alle globalen Stile, die Sie standardmäßig anwenden möchten definieren.

Zum Beispiel:

<ResourceDictionary  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Style TargetType="{x:Type TextBox}"> 
     <Setter Property="Height" Value="25"/> 
     <Setter Property="Background" Value="red"></Setter> 
    </Style> 
</ResourceDictionary> 

Nun müssen Sie nur einen Verweis setzen in ihr so ​​App.xaml:

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

Hoffe es wird dir helfen.

Einen schönen Tag noch.