访问WPF用户控件库中的应用程序资源

时间:2017-03-07 07:13:24

标签: c# wpf

我有一个WPF用户控件库项目。 在同一个项目中,我有一个资源文件,我将它包含在我的用户控制资源中:

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="../Styles/Globals.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</UserControl.Resources>

如何从代码后面访问此资源? 当我尝试访问Application.Current.Resources时,它是空的。

由于

编辑: 我意识到这是因为资源是用户控件的成员而不是应用程序的成员。 (在用户控件库项目中,我无法在应用程序级别添加资源)。

但是,因为我使用的是MVVM,所以我没有从我的viewmodel访问用户控件,所以我如何才能到达用户控件资源中的样式?

2 个答案:

答案 0 :(得分:0)

您可以访问

等样式
Style style = Application.Current.FindResource("ResourceName") as Style;

其中&#39; ResourceName&#39;来自&#39; Styles / Globals.xaml&#39;

答案 1 :(得分:0)

这样的事情对我有用:

<Application x:Class="MyApp.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         StartupUri="MainWindow.xaml">
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/MyLibraryNamespace;component/rdImages.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MyLibraryNamespace;component/rdColorImages.xaml" />
            <ResourceDictionary Source="/rdStyles.xaml" />
            <ResourceDictionary Source="/rdStringResourceEN.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

前两个资源词典来自外部库(样式,绘图画笔),后两个是本地的(包含在我的项目中 - 样式,字符串)。