Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XAML资源字典-无法应用默认样式_C#_Wpf_Xaml - Fatal编程技术网

C# XAML资源字典-无法应用默认样式

C# XAML资源字典-无法应用默认样式,c#,wpf,xaml,C#,Wpf,Xaml,我现在面临一个非常奇怪的情况 我有一个WPF应用程序,在App.xaml中有以下几行: <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary> <local:AppBootstrapper x:Key="boo

我现在面临一个非常奇怪的情况

我有一个WPF应用程序,在App.xaml中有以下几行:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary>
                <local:AppBootstrapper x:Key="bootstrapper" />
            </ResourceDictionary>
            <ResourceDictionary Source="./Styles/MyTheme.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
<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>
<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>
    <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>

然后我在MyTheme.xaml中有一些字典:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary>
                <local:AppBootstrapper x:Key="bootstrapper" />
            </ResourceDictionary>
            <ResourceDictionary Source="./Styles/MyTheme.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
<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>
<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>
    <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>

最后还有一个DataGrid,我希望在默认情况下应用于我的应用程序的所有DataGrid(在DataGridStyles.xaml中):


出于某种原因,DataGrid样式不适用,但如果我将其直接放在MyTheme.xaml中,它就会工作:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary>
                <local:AppBootstrapper x:Key="bootstrapper" />
            </ResourceDictionary>
            <ResourceDictionary Source="./Styles/MyTheme.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
<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>
<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>
    <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>

请注意,MaterialDesignDataGrid是在MaterialDesignTheme.Defaults.xaml中定义的

这是一种预期的行为吗?我做错什么了吗


非常感谢您抽出时间。

请为DataGridStyles.xaml的生成操作尝试不同的设置。我认为如果您将其设置为Page,它应该可以工作。

尝试为DataGridStyles.xaml的构建操作设置不同的设置。我想如果你把它设置为Page,它应该可以工作。

你试过用
DynamicResource
而不是
StaticResource
吗?如果你是说
,是的,我试过了,但不起作用。你试过用
DynamicResource
而不是
StaticResource
吗?如果你是说
,是的,我试过了,但它不起作用。康奈尔,这可能是一个与ResourceDictionary合并的顺序有关的问题。Connell,这可能是一个与ResourceDictionary合并的顺序有关的问题。