在WPF中使用画笔,模板和样式等资源时,可以将它们指定为StaticResources
<Rectangle Fill="{StaticResource MyBrush}" />
Run Code Online (Sandbox Code Playgroud)
或者作为DynamicResource
<ItemsControl ItemTemplate="{DynamicResource MyItemTemplate}" />
Run Code Online (Sandbox Code Playgroud)
大多数时候(总是?),只有一个工作,另一个将在运行时抛出异常.但我想知道原因:
我假设静态与动态之间的选择并不像看起来那么随意......但我没有看到模式.
我有一个包含多个用户控件的程序集.对于此用户控件程序集,我想要一个资源字典.程序集中的所有用户控件都应该能够访问资源字典.我必须添加吗?
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
...
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)
应该使用资源字典的每个用户控件,还是有某种方法将它放在一个地方并只是引用它?
我可以在我的主应用程序中引用它,还是需要MergedDictionaries调用呢?
编辑:主应用程序位于单独的项目/程序集中,而不是用户控件.