如何在wpf中的viewmodel中访问字符串资源

时间:2014-06-11 04:59:47

标签: wpf viewmodel resourcestring

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

由于

1 个答案:

答案 0 :(得分: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;
    }

您可以像这样从viewmodel获取资源。 例如:

ResourceDictionary resourceDictionary = (ResourceDictionary)SharedResourceDictionary.SharedDictionary;

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