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