【问题标题】:how to access string resource in viewmodel in wpf如何在wpf的viewmodel中访问字符串资源
【发布时间】:2014-06-11 04:59:47
【问题描述】:

我是 WPF 的新手,遵循 MVVM 模式。试图创建 dll,我在 resourcedictionary 中定义了一些资源字符串,能够在 xaml 文件中访问它,但我需要在 viewmodel 中访问它。 在网上搜索,发现有一个方法 TryFindResource() 但这个方法是在应用程序上下文中,我如何在视图模式下使用它?

谢谢

【问题讨论】:

  • 实际上,在 MVVM 中尝试从 ViewModel 访问 WPF 资源字符串通常被认为是不好的做法。通常,您应该避免在 ViewModel 中使用任何 WPF 功能。因此,最好在 ViewModel 中定义字符串并从 XAML 访问 ViewModel 的字符串(例如,使用 Bindingx:Static)。

标签: wpf viewmodel resourcestring


【解决方案1】:

你好,你可以有一个像下面这样的静态类,这个静态类将有你的resourceDIctionary的引用,通过这个你可以从你的viewmodel访问资源字典中的资源。

internal static class SharedResourceDictionary
    {
        internal static ResourceDictionary SharedDictionary
        {
            get
            {
                if (_sharedDictionary == null)
                {
                    try
                    {
                        System.Uri resourceLocater1 = new System.Uri(
                                                        string.Format("/{0};component/YourResourceDictionary.xaml",
                                                        "YourProject"), System.UriKind.Relative);
                        ResourceDictionary resourceDictionary = new ResourceDictionary
                        {
                            Source = resourceLocater1
                        };
                        _sharedDictionary = resourceDictionary; 
                    }
                    catch (Exception e)
                    {

                    }
                }

                return _sharedDictionary;
            }
        }
        private static ResourceDictionary _sharedDictionary;
    }

您可以像这样从视图模型中获取资源。 例如:

ResourceDictionary resourceDictionary = (ResourceDictionary)SharedResourceDictionary.SharedDictionary;

LinearGradientBrush brush = (LinearGradientBrush)resourceDictionary["ButtonNormalBackground"];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 2011-05-08
    相关资源
    最近更新 更多