2016-03-31 4 views
0

Ich habe eine Klassenbibliothek, die ein ziemlich großes Ressourcenwörterbuch enthält, und ich denke, dass die Organisation meines Projekts verbessert werden könnte, indem es in kleinere spezifischere Dateien z. B. für die Kontrollstile für die Farben ect aufgeteilt wird. Mein Problem ist, dass einige der Wörterbücher die Felder anderer verwenden (z. B. verwenden die Steuerstile die Farben).Wie kann ich ein Ressourcenwörterbuch in zwei teilen?

Meine Frage ist, wie kann ich ein Ressourcenwörterbuch in zwei teilen und dann ein Wörterbuch in einem anderen verwenden? Hier

ist, was (ein Teil) die volle Wörterbuch sieht aus wie (nicht getrennt)

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:system="clr-namespace:System;assembly=mscorlib"> 

    <SolidColorBrush x:Key="backgroundColour" Color="#FF1D1D1D"/> 
    <SolidColorBrush x:Key="foregroundColour" Color="#FFEAEAEA"/> 
    <SolidColorBrush x:Key="textColour" Color="White"/> 
    <SolidColorBrush x:Key="borderColour" Color="#FFF31515"/> 
    <SolidColorBrush x:Key="mouseOverBackgroundColour" Color="#E59400"/> 
    <SolidColorBrush x:Key="mouseOverForegroundColour" Color="White"/> 
    <SolidColorBrush x:Key="mousePressedBackgroundColour" Color="OrangeRed"/> 
    <SolidColorBrush x:Key="mousePressedForegroundColour" Color="White"/> 

    <Style x:Key="DriveButtonStyle" TargetType="{x:Type Button}"> 
     <Setter Property="Background" Value="{DynamicResource backgroundColour}" /> 
     <Setter Property="Foreground" Value="{DynamicResource foregroundColour}" /> 
     <Setter Property="FontSize" Value="16" /> 
     <Setter Property="FontFamily" Value="Calibri Light" /> 
     <Setter Property="SnapsToDevicePixels" Value="True" /> 
     <Setter Property="Margin" Value="2" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Button}"> 
        <Border Background="{TemplateBinding Background}" BorderBrush="Gray" BorderThickness="1" > 
         <ContentPresenter x:Name="MyContentPresenter" Content="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
        </Border> 

        <ControlTemplate.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="Background" Value="{DynamicResource mouseOverBackgroundColour}" /> 
          <Setter Property="Foreground" Value="{DynamicResource mouseOverForegroundColour}" /> 
         </Trigger> 

         <Trigger Property="IsPressed" Value="True"> 
          <Setter Property="Background" Value="{DynamicResource mousePressedBackgroundColour}" /> 
          <Setter Property="Foreground" Value="{DynamicResource mousePressedForegroundColour}" /> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <Style x:Key="DriveImageStyle" TargetType="{x:Type Image}"> 
     <Setter Property="Width" Value="30" /> 
     <Setter Property="Height" Value="30" /> 
     <Setter Property="Margin" Value="2" /> 
     <Setter Property="HorizontalAlignment" Value="Left" /> 
    </Style> 

    <Style x:Key="DriveLabelStyle" TargetType="{x:Type Label}"> 
     <Setter Property="VerticalAlignment" Value="Center" /> 
     <Setter Property="HorizontalAlignment" Value="Center" /> 
     <Setter Property="Foreground" Value="{DynamicResource foregroundColour}" /> 
     <Setter Property="FontSize" Value="15" /> 
     <Setter Property="FontFamily" Value="Calibri Light" /> 
    </Style> 

+1

Wenn Sie nicht wissen, wie Ihr Wörterbuch aussieht, ist es schwierig, eine definitive Antwort zu geben, aber haben Sie sich mit '' beschäftigt? – Shaamaan

+0

Ich werde in Merged Dictionaries suchen. Ich dachte, sie sollten dort verwendet werden, wo Teile von zwei * separaten * Wörterbüchern verwendet werden sollen. Ich habe ein Beispiel des Wörterbuchs hinzugefügt, das ich zu teilen versuche. – Timmoth

+0

Okay, egal, danke für die Hilfe Shaamaan. Ich denke, ich habe es jetzt funktioniert. MergedDictionaries sind der Schlüssel ... – Timmoth

Antwort

1

Haben Sie nachging <ResourceDictionary.MergedDictionaries> mit?

Sie können es verwenden, um mehrere Wörterbücher zu definieren, was genau das zu sein scheint, wonach Sie suchen.

0

Dank @Shaamaan habe ich das gewünschte Verhalten arbeiten. Ich spaltete die Haupt-Ressourcenverzeichnis in kleinere Dateien und erstellt dann eine neue Datei mit dem Namen ‚Ressourcen‘ wie folgt:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:system="clr-namespace:System;assembly=mscorlib"> 

    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="Buttons.xaml"/> 
     <ResourceDictionary Source="Colours.xaml"/> 
     <ResourceDictionary Source="Controls.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 

</ResourceDictionary> 

jedoch die einzige Art, wie ich dies an die Arbeit konnte, war alle Verweise auf Farben als dynamisch aufzulisten Ressourcen statt statischer Ressourcen.

Verwandte Themen