在WPF中,这曾经很好用:
<Page.Resources>
<ResourceDictionary Source="resources/Styles.xaml" />
</Page.Resources>
但添加转换器(见下文)会导致第二个资源(Style.xaml
)出错:Each dictionary entry must have an associated key
。
<Page.Resources>
<local:MySizeConverter x:Key="sizeConverter"/>
<ResourceDictionary Source="resources/Styles.xaml" />
</Page.Resources>
但是,在第二行添加密钥(例如<ResourceDictionary x:Key="myStyleDict" Source="resources/Styles.xaml" />
会导致后面的代码出现以下错误
The name 'aTextBlockUsedToWork' does not exist in the current context
在添加密钥之前,可以在代码中成功访问aTextBlockUsedToWork
。请注意,如果我注释掉样式资源,转换器工作正常。我怎样才能让这两种资源都有效?
答案 0 :(得分:9)
您需要使用MergedDictionaries
导入另一个字典文件,如下所示:
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="resources/Styles.xaml" />
</ResourceDictionary.MergedDictionaries>
<local:MySizeConverter x:Key="sizeConverter"/>
</ResourceDictionary>
</Page.Resources>