【发布时间】:2015-02-14 17:50:05
【问题描述】:
我有一个 UI 项目,其中包含(到目前为止)18 个 XAML 资源,它们像这样合并到 App.xaml 中:-
<Application ...>
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/foo.Client.Common;component/UIStyles/Colours.xaml" />
<ResourceDictionary Source="pack://application:,,,/foo.Client.Common;component/UIStyles/Buttons.xaml" />
<ResourceDictionary Source="pack://application:,,,/foo.Client.Common;component/UIStyles/Menus.xaml" />
// etc..
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
当我在这个项目中编辑任何 XAML 视图时,我会在这些资源中包含的样式名称上获得智能感知 (Resharper)。
现在,应用程序也实现了“插件”架构,并且有几个包含视图和视图模型的类库项目;这些在运行时动态加载。尽管应用程序运行良好,但在这些项目中编辑 XAML 视图时,我没有获得样式名称智能感知。我可以通过将必要的样式合并到视图的 XAML 中来让智能感知工作,例如:-
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/foo.Client.Common;component/UIStyles/Buttons.xaml" />
//etc..
</ResourceDictionary.MergedDictionaries>
// User control-specific styles go here.
</ResourceDictionary>
</UserControl.Resources>
通过在每个用户控件中执行此操作,我是否会“复制”每个资源并因此膨胀应用程序的内存需求?如果是这样,有什么办法可以解决吗?如果我在类库中创建了一个资源文件,将 15 个“核心”资源合并到其中,然后将这一个资源合并到我的视图中会怎样?还会导致同样的问题吗?
如果做不到这一点,我想我将不得不在每个视图中注释掉“合并 XAML”,并仅在需要处理视图时临时恢复它。
【问题讨论】: