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

In WPF Project I have separate folder for each module I want default app.xaml file to be loaded whenever I hit that module screen

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

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

你不能那样做。

您也许可以做类似的事情来满足您的要求。假设您正在谈论资源。

考虑资源字典中 x:Key 为 "XX" 的单个资源。

当您在 app.xaml 中合并它时,它会被添加到一个散列表中,其键为 XX,无论您的资源是什么值。那进入 Application.Current.Resources.

如果您的 wpf 应用随后加载任何用户控件,window 无论使用动态资源 XX 的任何内容,它都会获取该值。从哪里加载并不重要。那可能是一个不同的图书馆或任何你喜欢的。

资源有范围。

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

中的那个

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

因此,您可以安排一些事情,使每个模块都有自己的 window(或其他一些父模块),这些模块以某种方式合并到它自己的独特资源字典中。这提供了您需要的任何资源的更本地版本。

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

然后您可以在应用程序级别合并您的资源字典。不过,一切都得到了他们。