例如:
<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>
有什么区别吗?任何答案都将不胜感激。
答案 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
加载其他资源,则必须这样做。