在WPF项目中,我对每个模块都有单独的文件夹,我希望在每次点击该模块屏幕时加载默认的app.xaml文件

在WPF项目中,我对每个模块都有单独的文件夹,我希望在每次点击该模块屏幕时加载默认的app.xaml文件,wpf,xaml,silverlight,migration,Wpf,Xaml,Silverlight,Migration,我正在将我的项目从Silverlight迁移到WPF,在Silverlight中,每个模块都有不同的项目及其自己的配置文件,即App.xaml。但在我的WPF项目中迁移它时,我为每个模块都有单独的文件夹。在WPF中,我们将silverlight库文件添加到WPF文件夹中。那么我们如何在文件夹级别初始化WPF中的app.xaml文件呢?对于“那么我们如何在文件夹级别初始化WPF中的app.xaml文件呢?”的答案是: 你不能那样做 你也许可以做一些类似的事情来满足你的需求。假设你说的是资源 考虑资

我正在将我的项目从Silverlight迁移到WPF,在Silverlight中,每个模块都有不同的项目及其自己的配置文件,即App.xaml。但在我的WPF项目中迁移它时,我为每个模块都有单独的文件夹。在WPF中,我们将silverlight库文件添加到WPF文件夹中。那么我们如何在文件夹级别初始化WPF中的app.xaml文件呢?

对于“那么我们如何在文件夹级别初始化WPF中的app.xaml文件呢?”的答案是:

你不能那样做

你也许可以做一些类似的事情来满足你的需求。假设你说的是资源

考虑资源字典中x:键为“XX”的单个资源

当您在app.xaml中合并它时,它将被添加到一个哈希表中,其键为XX,值为您的任何资源。这将进入Application.Current.Resources

如果您的wpf应用程序随后加载任何用户控件、使用DynamicSource XX的窗口,则它将获得该值。从哪里加载并不重要。那可能是一个不同的图书馆或任何你喜欢的图书馆

资源是有范围的

因此,可以在窗口级别合并资源字典。假设您在模块中添加了另一个资源字典。您将它合并到Window1的资源中,它有一个x:键为“XX”的东西。Window1的可视化树实例中的任何内容都将捕获您刚刚合并到的“新”XX。任何其他窗口中的任何内容仍将使用Application.Current.Resources之外的窗口

可以想象,您可以用这种方式在usercontrol级别合并资源字典。但这通常不是一个好主意,因为每个实例都会在资源的内存中获得一个实例。如果你不小心的话,那会增加很多记忆

因此,您可以安排事情,使每个模块都有自己的窗口(或其他父级),该窗口合并到自己的独特资源字典中。这为您所需的任何资源提供了更本地化的版本

可能用户一次只能导航到一个模块,因此只能看到一个模块。不管模块是什么


然后可以在应用程序级别将资源字典合并到中。不过,一切都会得到它们。

在wpf中,将有一个应用程序入口点,只有一个应用程序xaml用于此。这些是您打算关闭的合并资源?在特定于模块的资源字典中进行合并,并进行安排,以便它们替换基本资源。最后合并为同一个x:Key的将获胜。使用DynamicSource绑定到它们。@Andy您的意思是像在common app.xaml文件中那样添加xaml吗?将app.xaml更改为module1.xaml谢谢您的回复。最后,为每个模块创建项目对我来说很有用。我有两个WPF应用程序“应用程序A”和应用程序B。从“应用程序A”我导航到“应用程序B”的“ABC.xaml”页面。在导航到“ABC.xaml”页面之前,我想调用“应用程序B”的app.xaml.cs文件。这可能吗?@andy-如果其他WPF项目(模块)的结构与解决方案中单独的WPF项目的结构类似于Silverlight,并且每个模块都有自己的App.xaml,该怎么办。我认为可以从解决方案中的一个WPF项目导航到另一个WPF项目,但它不像Silverlight那样调用该项目的App.xaml。有没有任何理由说明这不起作用,因为他们都来自同一个家庭?那有什么解决办法吗?因为不可能将所有代码从模块的App.xaml移动到根WPF项目,因为这会带来冲突。将只使用入口点App.xaml。引用的任何dll都将加载到入口点的应用程序上下文中。我概述了工作循环。