123*_*per 13 .net wpf xaml localization
我有一个很常见的问题.在WPF应用程序中进行本地化的最佳方法是什么.好吧,我在SO和Binged中搜索了很多.但我找不到任何非常简单和优雅的指针.
假设我必须在UI中显示如下内容:
英语:Orgnanization - Beoing
法语:Organizzazione - Beoing
<StackPanel Orientation="Horizontal">
<TextBlock Text="Organization -"></TextBlock>
<TextBlock Text="{Binding Path=OrganizationName}">
</TextBlock>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
基本上,我需要将本地化文本分配给Organization Label TextBlock.我应该将连字符与"组织 - "分开并将其放在单独的标签中吗?
我怎么做?
创建一个项目WpfApplication1
创建文件夹"本地化"
在"本地化"中添加资源文件(Strings.resx)并添加字符串"OrganizationText"和值"组织"
编译时,会生成designer.cs文件.不幸的是,这个文件中的所有方法都是内部的,我们需要公共访问来启用来自wpf的字符串引用.要做到这一点,则更换的.resx"自定义工具"与"PublicResXFileCodeGenerator"(> = VS2008),并再次建立.在MainWindow.xaml中使用此xaml:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:localization="clr-namespace:WpfApplication1.Localization"
Title="MainWindow" Height="350" Width="525">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{x:Static localization:Strings.OrganizationText}"/>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
要添加' - ',您必须使用多绑定(请参阅此处)
小智 1
我们有一个应用程序可以在运行时切换 UI 语言,并且能够通过将适当的资源复制到某个目录来使用新的 UI 语言。为此使用某种编译资源在分发等方面太不灵活。因此,我们将语言资源作为 System:Strings 放在 ResourceDictionary 中 - 每种语言的单独 XAML 文件中都有一个 ResourceDictionary。XAML 文件在 VS 中标记为内容并复制。您可以将它们用作 XAML 中的 DynamicResources 或通过 C# 中的 Localizer 实例。事实证明,这个概念在我们的应用中非常有用。
| 归档时间: |
|
| 查看次数: |
9821 次 |
| 最近记录: |