2017-04-07 4 views
1

Ich bin derzeit mit einer wirklich seltsamen Situation konfrontiert.XAML Resouce-Wörterbuch - nicht Standard-Stil anwenden

Ich habe eine WPF-Anwendung mit den folgenden Zeilen innerhalb App.xaml:

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary> 
       <local:AppBootstrapper x:Key="bootstrapper" /> 
      </ResourceDictionary> 
      <ResourceDictionary Source="./Styles/MyTheme.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

Dann habe ich einige Wörterbücher in MyTheme.xaml:

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="./UserControlStyles.xaml"/> 
    <ResourceDictionary Source="./WizardStyle.xaml"/> 
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Dark.xaml" /> 
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" /> 
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.Blue.xaml" /> 
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Blue.xaml" /> 

    <ResourceDictionary Source="./DataGridStyles.xaml"/> 
    <ResourceDictionary Source="./TreeViewStyles.xaml"/> 
    <ResourceDictionary Source="./ToggleButtonStyles.xaml"/> 
</ResourceDictionary.MergedDictionaries> 

Schließlich gibt es eine DataGrid, das ich standardmäßig auf alle DataGrids meiner Anwendung anwenden möchte (in DataGridStyles.xaml):

<ResourceDictionary> 
     <Style TargetType="{x:Type DataGrid}" BasedOn="{StaticResource MaterialDesignDataGrid}"> 
      <Setter Property="AutoGenerateColumns" Value="False" /> 
      <Setter Property="CanUserAddRows" Value="False" /> 
      <Setter Property="CanUserDeleteRows" Value="False" /> 
      <Setter Property="SelectionMode" Value="Single" /> 
     </Style> 
    </ResourceDictionary> 

Die Datagrid-Stil Anwendung wird aus irgendeinem Grund nicht, aber es funktioniert, wenn ich es in direkt setzen MyTheme.xaml:

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="./UserControlStyles.xaml"/> 
    <ResourceDictionary Source="./WizardStyle.xaml"/> 
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Dark.xaml" /> 
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" /> 
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.Blue.xaml" /> 
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Blue.xaml" /> 

    <ResourceDictionary Source="./DataGridStyles.xaml"/> 
    <ResourceDictionary Source="./TreeViewStyles.xaml"/> 
    <ResourceDictionary Source="./ToggleButtonStyles.xaml"/> 

    <ResourceDictionary> 
     <Style TargetType="{x:Type DataGrid}" BasedOn="{StaticResource MaterialDesignDataGrid}"> 
      <Setter Property="AutoGenerateColumns" Value="False" /> 
      <Setter Property="CanUserAddRows" Value="False" /> 
      <Setter Property="CanUserDeleteRows" Value="False" /> 
      <Setter Property="SelectionMode" Value="Single" /> 
     </Style> 
    </ResourceDictionary> 
</ResourceDictionary.MergedDictionaries> 

Beachten Sie, dass MaterialDesignDataGrid innerhalb MaterialDesignTheme.Defaults definiert ist .xaml.

Ist es ein erwartetes Verhalten? Mache ich etwas falsch?

Vielen Dank für Ihre Zeit.

+0

haben Sie mit 'DynamicResource' anstelle von' StaticResource' versucht? – Safe

+0

Wenn du meinst '', ja, habe ich, aber es funktioniert nicht. – Brutus

Antwort

0

Probieren Sie verschiedene Einstellungen für die Build-Aktion Ihrer DataGridStyles.xaml aus. Ich denke, es sollte funktionieren, wenn Sie es auf Seite festlegen.

+0

Es ist tatsächlich als "Seite" eingestellt, funktioniert aber nicht. – Brutus

+0

Connell, könnte dies ein Problem sein, das mit der Reihenfolge zusammenhängt, in der ResourceDictionaries zusammengeführt werden. – Brutus

Verwandte Themen