合并的词典和本地资源

时间:2013-09-05 00:32:27

标签: wpf xaml dictionary resourcedictionary mergeddictionaries

我有一个Styles.xaml,它将ResourceDictionary内的许多MergedDictionary分组。

我在UserControl.Resources

中导入了Styles.xaml
<UserControl.Resources>
    <ResourceDictionary Source="Dictionaries\Styles.xaml" />
</UserControl.Resources>

但是当我尝试添加转换器时

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Dictionaries\Styles.xaml" /> <--! Exception -->
        </ResourceDictionary.MergedDictionaries>
        <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
    </ResourceDictionary>
</UserControl.Resources>

它提出

  

ArgumentNullException:值不能为空。
  参数名称:item

将转换器包装在另一个MergedDictionary内无效 我怎么解决这个问题呢? 谢谢大家!


解决

我最终弄明白了:Exception是在一个.xaml文件中引发的,但是Visual Studio没有提供足够的信息来找到错误的行。
以下代码确实有效。

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Dictionaries\Styles.xaml" />
        </ResourceDictionary.MergedDictionaries>
        <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
    </ResourceDictionary>
</UserControl.Resources>

1 个答案:

答案 0 :(得分:12)

试试这个

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/PROJECTNAMESPACE (TestProject.Something);component/Dictionaries/Styles.xaml" /> 
        </ResourceDictionary.MergedDictionaries>
        <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
    </ResourceDictionary>
</UserControl.Resources>