【问题标题】:Access application resources in WPF User Control Library访问 WPF 用户控件库中的应用程序资源
【发布时间】:2017-03-07 07:13:24
【问题描述】:

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

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

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

谢谢

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

但是,因为我使用的是 MVVM,所以我无法从我的视图模型访问用户控件,那么我如何才能在用户控件的资源中获得样式?

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    您可以访问类似的样式

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

    “ResourceName”来自“Styles/Globals.xaml”

    【讨论】:

    • 我试过了,但它不起作用!它在常规 WPF 项目中可以正常工作,但在用户控件库项目中却不行
    【解决方案2】:

    这样的事情对我有用:

    <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>
    

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

    【讨论】:

    • 在用户控件库项目中我没有app.xaml文件,不能在应用层声明资源
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多