在相同资源中使用样式字典和转换器

时间:2017-05-25 01:10:12

标签: wpf xaml

我有一个小程序,它有一个基于布尔值的项目背景颜色的转换器。我还有一个样式表来涵盖很多基本格式。我有这两个独立工作,但当我尝试将它们放在一起时,如:

UserControl.Resources>
    <converter:RawMaterialHighlight x:Key="RawMat"></converter:RawMaterialHighlight>
    <ResourceDictionary Source="../Styles.xaml"></ResourceDictionary>
</UserControl.Resources>

我收到了2个错误:

  

每个词典条目必须具有关联的密钥。

     

添加到IDictionary的所有对象必须具有Key属性或与其关联的其他类型的键。 13号线位置10.

当我添加x:Key&#34; Dictionary&#34;到字典行,它说它无法解析字典资源

<TextBlock Text="Material Type" Style="{StaticResource ResourceKey=TextBlockSectionHeader}"></TextBlock>
  

资源&#34; TextBlockSectionHeader&#34;无法解决。

如果我添加Dict.TextBlockSectionHeader,我会得到相同的&#39;无法解析&#39;错误。我假设我在参考资料部分中错误地声明它,但到目前为止我还是无法找到解决方案。

1 个答案:

答案 0 :(得分:1)

我在这里找到答案:Merged dictionaries and local resources

答案是将样式嵌套在合并的字典中,并将整个内容放在资源字典中:

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>                
            <ResourceDictionary Source="../Styles.xaml"></ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
        <converter:RawMaterialHighlight x:Key="RawMat"></converter:RawMaterialHighlight>
    </ResourceDictionary>        
</UserControl.Resources>