我将App.xaml的构建操作更改为"页面",因此我可以处理启动画面并确保我的应用程序仅作为单个实例运行(具有我自己的入口点).它在运行时工作正常,但在设计时,应用程序无法再查看我的资源.资源位于同一项目中的单独xaml文件中.如何让我的应用再次在设计时看到资源?
谢谢
将您的资源分解为一个单独的资源字典,然后将它们拉入App.xaml,如下所示:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MasterResources.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)
您可以根据需要以这种方式添加多个资源字典.
您还需要在UserControls(以及使用资源引用UserControls的Windows)中执行相同的操作:
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MasterResources.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)
有关此主题的更多信息,请参见http://ithoughthecamewithyou.com/post/Merging-Resource-Dictionaries-for-fun-and-profit.aspx.
如果我理解正确,您正在 app.xaml 中加载应用程序范围的资源吗?在这种情况下你可以这样做:
App app = new App();
//Get assembly name is your own method
string assemblyName = GetAssemblyName(Assembly.GetExecutingAssembly());
Uri resourceLocater = new Uri("/" + assemblyName + ";component/app.xaml", UriKind.Relative);
System.Windows.Application.LoadComponent(app, resourceLocater);
MainWindow mainWindow = new MainWindow();
app.Run(mainWindow);
Run Code Online (Sandbox Code Playgroud)
然后你的资源就会被加载
/丹尼尔