WPF类库中的全局静态资源?

8
在WPF应用程序中,您可以将全局静态资源放置在app.xaml文件中,例如:
 <Application.Resources>
        <!--Global View Model Locator-->
        <vm:ViewModelLocator x:Key="Locator"
                             d:IsDataSource="True" />
    </Application.Resources>

这是来自MVVM Light的内容。如果您的项目是一个WPF类库,那么初始化这些全局静态资源的适当方式是什么?

1个回答

5

您可以创建一个包含资源的ResourceDictionary,并使用以下代码合并字典。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:vm="clr-namespace:WPFProject.ViewModel"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<vm:ViewModelLocator x:Key="Locator" 
                         d:IsDataSource="True" />

代码:

 Application.Current.Resources.MergedDictionaries.Add(Application.LoadComponent(
           new Uri("/WPFProject;Component/Resources/ResourceDictionary1.xaml", UriKind.Relative)) as ResourceDictionary);

1
你可以在XAML中创建MergedDicionaries,在App.xaml文件中,这是最常见的做法(而不是在代码后台中创建它们)。 - Hannish
我找到的最简单、最好的解决方案。在从WPF应用程序切换到库项目时运行得非常好。 - Stan1k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接