是否有任何区别"使用ResourceDictionary或不使用wpf xaml来包装我的资源"?

时间:2018-05-25 03:31:57

标签: wpf xaml

例如:

<UserControl.Resources>
        <converters:WorkflowInstanceStatusConvert x:Key="WorkflowInstanceStatusConvert"/>
        <converters:WorkflowInstanceStatusConvert x:Key="WorkflowInstanceStatusConvert1"/>
    </UserControl.Resources>

<UserControl.Resources>
    <ResourceDictionary>
        <converters:WorkflowInstanceStatusConvert x:Key="WorkflowInstanceStatusConvert"/>
        <converters:WorkflowInstanceStatusConvert x:Key="WorkflowInstanceStatusConvert1"/>
    </ResourceDictionary>
</UserControl.Resources>

有什么区别吗?任何答案都将不胜感激。

2 个答案:

答案 0 :(得分:0)

我认为加载控件时不会立即处理资源字典中的项目。它们在请求时按需加载。

以下是MSDN的说明

  

当时,不会立即处理ResourceDictionary中的项目   应用程序代码由XAML加载程序加载。相反,   ResourceDictionary仍然是一个对象,各个值都是   仅在特别要求时处理。

这里是引用的链接 https://msdn.microsoft.com/en-us/library/system.windows.resourcedictionary(v=vs.85).aspx

答案 1 :(得分:0)

第一个代码示例是隐式集合语法的示例;表示集合元素(ResourceDictionary)的标记可以省略。而是指定作为项添加到集合的元素。 (来自Microsoft documentation

由于<ResourceDictionary>被省略,Resources属性最初为null,UserControl会自动创建ResourceDictionary - see the source code

在第二个代码示例中,显式指定了ResourceDictionary。如果您使用MergedDictionaries加载其他资源,则必须这样做。