2017-03-07 184 views
1

我有一个WPF用户控件库项目。 在这同一个项目我有一个资源文件,我包括在我的用户控制资源是这样的:访问WPF用户控件库中的应用程序资源

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

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

感谢

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

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

回答

0

您可以访问的样式像

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

其中 '资源名称' 是 '样式/ Globals.xaml'

+0

我试过了,但它不起作用!它在WPF项目中的正常 工作正常,但在用户控制库项目中不起作用 – Hana

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> 

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

+0

在用户控件库项目中,我没有app.xaml文件,并且无法在应用程序级别声明资源 – Hana

相关问题