我需要根据某些配置选项在运行时在代码中加载和合并ResourceDictionaries
。合并Application.OnStartup
方法中的词典当然可以正常工作,在运行时。
Visual Studio的设计模式不会加载您的自定义Application类,我知道在DesignMode中获取字典的唯一方法是将它们合并到App.xaml中。
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="SomeDictionary1.xaml" />
<ResourceDictionary Source="SomeDictionary2.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
然而,这在我目前的情况下是不可行的。所以我要问的是,Visual Studio实际上做了什么来将App.xaml中的合并词典加载到应用程序范围的设计界面而不构建自定义Application类?如何在设计模式下将这些词典从代码合并到应用程序范围,以实际解决问题?
答案 0 :(得分:1)
使用d:namespace和mc:Ignorable,这是可能的。 在设计时,它将应用Source属性。在运行时,它将忽略它。 (您将在运行时创建一个空的ResourceDictionary ...)
<Application x:Class="WpfApplication2.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary d:Source="designTime.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
谢谢,Rob