通过代码隐藏本地化WPF控件
我有一个WPF应用程序,需要支持本地化。我有两个按钮(添加、删除)和一个组合框(英语、法语)。当我选择法语时,按钮的内容应该更改为(ajouter,effacer) 现在,我的问题是,如果我在代码隐藏中手动设置按钮内容,会有什么不利或缺点?请参阅下面的代码通过代码隐藏本地化WPF控件,wpf,c#-4.0,localization,Wpf,C# 4.0,Localization,我有一个WPF应用程序,需要支持本地化。我有两个按钮(添加、删除)和一个组合框(英语、法语)。当我选择法语时,按钮的内容应该更改为(ajouter,effacer) 现在,我的问题是,如果我在代码隐藏中手动设置按钮内容,会有什么不利或缺点?请参阅下面的代码 private void comboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { ResourceDictionary currentLanguage
private void comboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ResourceDictionary currentLanguage = new ResourceDictionary();
switch (comboBox.Text)
{
case "english":
currentLanguage.Source = new Uri("../en-US.xaml", UriKind.RelativeOrAbsolute);
break;
case "france":
currentLanguage.Source = new Uri("../fr-FR.xaml", UriKind.RelativeOrAbsolute);
break;
}
btnAdd.Content = Resources.GetString("insert");
btnDelete.Content = Resources.GetString("delete");
}
我知道这有点奇怪,但请回答。为什么我不应该这样本地化我的应用程序呢
谢谢 交换资源字典时,应使用
DynamicResources
而不是StaticResources
基本上在XAML中执行以下操作:
XAML
其中插入和删除在资源字典中使用x:Key
当您交换字典时,这些将动态更新Hi MyKuLLSKI,感谢您的回复和回答。你能解释一下为什么应该使用这种方法(优点是什么)而不是使用我的方法吗?这样做就是充分利用WPF。WPF最好使用资源和绑定。理想情况下,一个优秀的架构WPF应用程序具有最少的x:Name引用,并且使用代码隐藏来更新GUI。另外,按照我的方式进行操作将要求您只需更改资源字典,就可以了。按照您的方式,您必须手动更新每个控件背后的代码。然后,如果你再加一个,你必须记得加上它。然后,如果您使用DataTemplates,那么找到这些控件将非常痛苦。
<Button Content="{DynamicResource Insert}"/>
<Button Content="{DynamicResource Delete}"/>