WPF编译错误“;IDictionary必须有一个键属性";

WPF编译错误“;IDictionary必须有一个键属性";,wpf,styles,Wpf,Styles,我已经创建了要在WPF应用程序的多个xaml页面中使用的控件样式。为此,我创建了一个Resources.xaml并在其中添加了样式 然后在我的页面中添加此代码 <Grid.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="pack://application:

我已经创建了要在WPF应用程序的多个xaml页面中使用的控件样式。为此,我创建了一个Resources.xaml并在其中添加了样式

然后在我的页面中添加此代码

<Grid.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/SampleEventTask;component/Resources.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Grid.Resources>

在两个页面上,这很好,但在第三个页面上,我得到了一个编译错误,它说:

添加到IDictionary的所有对象 必须具有键属性或某些属性 与关联的其他类型的密钥 他们

如果我为此添加了一个键,比如ResourceDictionary x:key=“x”,那么编译错误就会出现,但在运行应用程序时,它会在查找样式时出错

我可以通过将原始(未指定键)“ResourceDictionary”xaml从顶层网格移动到该页面上包含的网格中,消除编译错误并运行应用程序

但我不明白这里发生了什么。任何关于问题所在的建议,我只是遗漏了一些东西或做了一些不正确的事情。有没有更好的方式来分享风格


谢谢

该页面中除了合并的ResourceDictionary之外,还有其他定义的资源吗

例如,下面是我创建的窗口中的一个片段

<Window x:Class="SelectionPagePrototype.SelectionPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:SelectionPagePrototype"
    Title="SelectionPage" MinHeight="600" MinWidth="800" Loaded="OnLoaded">
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="ImageResourceDictionary.xaml" />
            </ResourceDictionary.MergedDictionaries>
            <local:QuickPickCheckedConverter x:Key="quickPickConverter" />
            <local:BoolToCaptionConverter x:Key="captionConverter" />
            <local:ProductAndImageTypeConverter x:Key="imageConverter" />
        </ResourceDictionary>
    </Window.Resources>
    <Grid> ...

...

合并词典不需要密钥,但该窗口的其他资源需要。

可能重复感谢您指出
x:key
。我是通过使用
x:Name
得到这个错误的。