enter image description here我正在将项目从Silverlight迁移到WPF,在Silverlight中,每个模块都有不同的项目,并且它是自己的配置文件,即App.xaml。但是在我的WPF项目中进行迁移时,我为每个模块都有单独的文件夹。在WPF中,我们将silverlight库文件添加到WPF文件夹中。那么我们如何在WPF中以文件夹级别初始化app.xaml文件?
答案 0 :(得分:3)
“那么我们如何才能在文件夹级别的WPF中初始化app.xaml文件?”的答案。是:
你不能那样做。
您可以执行类似的操作来满足您的要求。假设您在谈论资源。
请考虑x:Key为“ XX”的资源字典中的单个资源。
当您将其合并到app.xaml中时,会将其添加到哈希表中,并使用XX键和资源的任何值。进入Application.Current.Resources。
如果您的wpf应用程序随后加载了任何用户控件,则对使用dynamicresource XX的任何窗口进行窗口化,然后它将获得该值。不管从哪里加载它。那可能是一个不同的库,也可能是您喜欢的任何库。
资源具有范围。
因此,您可以在窗口级别合并资源字典。假设您在模块中添加了另一个资源字典。您将其合并到Window1的资源中,并且它的x:Key为“ XX”。 Window1的可视树实例中的任何内容都将获取您刚刚合并的“新” XX。其他任何窗口中的任何内容仍将使用Application.Current.Resources中的那个。
可以想象,您可以通过这种方式在用户控制级别合并资源字典。尽管这通常不是一个好主意,因为每个实例都会在您的资源内存中获得一个实例。如果您不小心,那可能会增加很多内存。
因此,您可以安排事情,以便每个模块都有自己的窗口(或其他父窗口),这些窗口合并在自己的独特资源字典中。这样可以提供所需资源的更本地版本。
或
也许用户只浏览到一个模块,因此一次只能看到一个模块。无论模块是什么。
然后可以在应用程序级别合并资源字典。一切都会得到他们。