SharpDevelop4.2如何启动国际化的WPF项目?我想创建一个用户可以在多种语言之间进行选择的软件。首先,我想学习如何处理国际化,因为我以前从未做过。作为IDE,我使用SharpDevelop或#develop,但你会拼写它。我想使用C#和WPF,因为我现在也在学习XAML/WPF。所以我在ShardDevelop中新建了一个WPF项目。在主窗口中,我创建了一个ComboBox和一个TextBlock。ComboBox有两个条目:“德语”和“英语”。textBlock应该显示“HalloWelt!”或“HelloWorld!”,具体取决于所选的语言。现在是我卡住的部分。我想每种语言都是XML/XAML样式的单独文件(有道理)。这些文件在哪里?如何加载它们及其内容,以便加载所选语言的文本?我找到了一些例子,但都是关于创建资源DLL并使用一些奇怪的程序将它们反编译回csv文件的……我不明白,有没有更简单的方法?我迈出了下一步。现在通过“{StaticResourceStrings.MainForm.hwText}”加载TextBlock的文本。现在看起来像这样:我还为德语创建了一个ResourceDictionary,为英语创建了一个,它们都定义了我在TextBlock中使用的键。在Application.Resources第i部分中,默认加载ResourceDictionary。现在的问题是:如何在运行时“卸载”这本字典并用另一本字典替换它?当然,我使用ComboBox的SelectionChange-Event,但我在那里做什么?问题已经解决了!!感谢kmatyaszek,尽管我根据需要更改了事件处理程序的代码:UribaseUri=newUri(AppDomain.CurrentDomain.BaseDirectory);Uriuri=newUri(baseUri,"Languages\lang."+((senderasComboBox).SelectedItemasComboBoxItem).Tag.ToString()+".xaml");if(File.Exists(uri.LocalPath)||File.Exists((uri=newUri(baseUri,"Languages\lang.de-DE.xaml")).LocalPath)){ResourceDictionarydict=newResourceDictionary();dict.Source=uri;this.Resources.MergedDictionaries.Add(dict);如果您创建了两个ResourceDictionary文件,您可以通过DynamicResource绑定来完成。示例:第一个资源文件(Lang.en-US.xaml):用户名:密码:关闭登录以下ComboBox:代码隐藏SelectionChanged:privatevoidcbLang_SelectionChanged(objectsender,System.Windows.Controls.SelectionChangedEventArgse){ResourceDictionarydict=newResourceDictionary();switch(((senderasComboBox).SelectedItemasComboBoxItem).Tag.ToString()){case"en-US":dict.Source=newUri("Lang.en-US.xaml",UriKind.Relative);休息;case"pl-PL":dict.Source=newUri("Lang.pl-PL.xaml",UriKind.Relative);休息;默认值:中断;}this.Resources.MergedDictionaries.Add(dict);可以这样绑定:以上是C#学习教程:HowtostartaninternationalizedWPFprojectinSharpDevelop4.2?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
