bbq*_*ito 7 wpf wpf-controls resourcedictionary c#-4.0
我的解决方案中有两个项目.第一个项目是WPF应用程序,另一个是常规DLL项目.在DLL项目中,我有一些WPF用户控件.我希望这些控件共享一些资源并在DLL中定义它们.
我知道在常规WPF应用程序中,您可以在App.xaml中指定应用程序资源.DLL项目中是否有等价物?
小智 5
是的,您可以像这样在DLL中创建资源XAML(确保您在DLL中引用了所有WPF程序集):
<!-- name of the dictionary is MyResources in MyDLL namespace -->
<ResourceDictionary x:Class="MyDLL.MyResources"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="./Controls/ButtonStyles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)
并将其添加到WPF项目中的App类的资源中:
public App()
{
MyDLL.MyResources externalRes = new MyDLL.MyResources();
this.Resources.Add("MyExternalResources", externalRes);
}
Run Code Online (Sandbox Code Playgroud)
不,DLL 中没有等效项,因为资源加载不是程序集 (exe) 的一部分,而是应用程序的一部分。为了加载资源,必须加载应用程序。App 是应用程序的根元素,而不是 exe 程序集。要对 dll 中的控件执行相同的操作,您可以创建一个单独的 ResourceDictionary,并通过使用 ResourceDictionary.MergedDictionaries 将其合并到 UserControl 的资源中,将其添加到每个控件的 XAML 中。
| 归档时间: |
|
| 查看次数: |
8219 次 |
| 最近记录: |