我有一个项目以及解决方案中的主要项目。我想在此项目中的此XAML文件中本地将内容本地化。
我使用此处讨论的方式如何使用MVVM中的运行时间来更改UI语言?
但是我找不到任何方式。
<UserControl xmlns:languageHelper="clr-namespace:XX"
<UserControl.Resources>
<ObjectDataProvider x:Key="Resources" ObjectType="{x:Type languageHelper:CultureResources}" MethodName="GetResourceInstance"/>
</UserControl.Resources>
</UserControl>
我使用此代码查找objectdataprovider,但我不得通过
获得它public static ObjectDataProvider ResourceProvider
{
get
{
if (m_provider == null)
m_provider = (ObjectDataProvider)System.Windows.Application.Current.FindResource("Resources");
return m_provider;
}
}
Resources.Culture = culture;
ResourceProvider.Refresh();
它显示System.Windows.ResourcereferenceKeynotFoundException:'资源'未找到资源。'
问题是,您是在UserControls Resources中创建 ObjectDataProvider 。我认为您必须在app.xaml文件
中创建它这是一个示例:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ObjectDataProvider x:Key="Resources"
ObjectType="{x:Type languageHelper:CultureResources}"
MethodName="GetResourceInstance"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>