基于 .Net Core、WPF 的多语言实现(一)
- 学习 CultureInfo
- 基于WPF 的CultureInfo 信息大全
- Startup.cs
- MainWindow.Xaml
- MainWindow.Xaml.cs
学习 CultureInfo
官方文档: CultureInfo .
提供有关特定区域性(对于非托管代码开发,则称为“区域设置”)的信息。 这些信息包括区域性的名称、书写系统、使用的日历、字符串的排序顺序以及对日期和数字的格式化设置。
基于WPF 的CultureInfo 信息大全
Startup.cs
using System.Windows;namespace Simple.CultureInfoView;public class Startup: Application
{[STAThread]private static void Main(string[] args){try{new Startup().Run(new MainWindow());}catch (Exception ex){MessageBox.Show(ex.ToString());}finally{}}
}
MainWindow.Xaml
<Windowx:Class="Simple.CultureInfoView.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:data="clr-namespace:System.Globalization;assembly=System.Runtime"xmlns:local="clr-namespace:Simple.CultureInfoView"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"Title="MainWindow"Width="1400"Height="1000"FontSize="19"mc:Ignorable="d"><Window.Resources><ResourceDictionary><Style TargetType="TextBlock"><Setter Property="Margin" Value="2,8" /></Style></ResourceDictionary></Window.Resources><Grid><Grid.ColumnDefinitions><ColumnDefinition Width="auto" /><ColumnDefinition Width="*" /><ColumnDefinition Width="auto" /></Grid.ColumnDefinitions><ListView x:Name="PART_ListView"><ListView.ItemContainerStyle><Style TargetType="ListViewItem"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="ListViewItem"><Border Background="{TemplateBinding Background}" BorderThickness="2"><ContentPresenter /></Border><ControlTemplate.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter Property="Background" Value="Green" /></Trigger><Trigger Property="IsSelected" Value="True"><Setter Property="Background" Value="Yellow" /></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style></ListView.ItemContainerStyle><ListView.ItemTemplate><DataTemplate DataType="{x:Type data:CultureInfo}"><Label Content="{Binding DisplayName}" /></DataTemplate></ListView.ItemTemplate></ListView><Grid Grid.Column="1"><Grid.RowDefinitions><RowDefinition Height="auto" /><RowDefinition Height="auto" /><RowDefinition Height="auto" /></Grid.RowDefinitions><StackPanel><GroupBox Padding="10,0,0,0" Header="基本信息"><StackPanel><TextBlock><Run Text="Name :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.Name, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="NativeName :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.NativeName, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="EnglishName :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.EnglishName, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="DisplayName :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DisplayName, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="TwoLetterISOLanguageName :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.TwoLetterISOLanguageName, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="ThreeLetterWindowsLanguageName :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.ThreeLetterWindowsLanguageName, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="ThreeLetterISOLanguageName :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.ThreeLetterISOLanguageName, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="CultureTypes :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.CultureTypes, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="LCID :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.LCID, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="KeyboardLayoutId :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.KeyboardLayoutId, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="IsReadOnly :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.IsReadOnly, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="IsNeutralCulture :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.IsNeutralCulture, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="IetfLanguageTag :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.IetfLanguageTag, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="UseUserOverride :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.UseUserOverride, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock></StackPanel></GroupBox><GroupBox Padding="10,0,0,0" Header="Fomatting Date and Currency "><StackPanel><TextBlock><Run Text="FullDateTimePattern :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.FullDateTimePattern, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="TimeSeparator :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.TimeSeparator, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="LongDatePattern :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.LongDatePattern, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="LongTimePattern :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.LongTimePattern, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="MonthDayPattern :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.MonthDayPattern, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="DateSeparator :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.DateSeparator, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="NativeCalendarName :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.NativeCalendarName, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="PMDesignator :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.PMDesignator, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock></StackPanel></GroupBox></StackPanel></Grid><Grid Grid.Column="2"><StackPanel><GroupBox Header="星期名称"><StackPanel><TextBlock><Run Text="周一 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.DayNames[1], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="周二 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.DayNames[2], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="周三 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.DayNames[3], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="周四 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.DayNames[4], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="周五 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.DayNames[5], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="周六 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.DayNames[6], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="周天 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.DayNames[0], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock></StackPanel></GroupBox><GroupBox Header="月名称"><StackPanel><TextBlock><Run Text="一月 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.MonthNames[0], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="二月 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.MonthNames[1], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="三月 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.MonthNames[2], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="四月 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.MonthNames[3], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="五月 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.MonthNames[4], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="六月 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.MonthNames[5], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="七月 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.MonthNames[6], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="八月 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.MonthNames[7], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="九月 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.MonthNames[8], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="十月 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.MonthNames[9], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="十一月 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.MonthNames[10], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock><TextBlock><Run Text="十二月 :" /><Run Foreground="Red" Text="{Binding ElementName=PART_ListView, Path=SelectedItem.DateTimeFormat.MonthNames[11], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /></TextBlock></StackPanel></GroupBox></StackPanel></Grid></Grid>
</Window>
MainWindow.Xaml.cs
#region << 版 本 注 释 >>
/** ----------------------------------------------------------------* Copyright @ Daniel. All rights reserved.* 作 者 :Daniel大妞* 创建时间 :2022/7/3/22:57* 类 名 称 :MainWindow.xaml.cs* 域名空间 :Simple.CultureInfoView* 类 描 述 :* ------------------------------------------------------* 历史更新记录* 版本 : V1.0.0.0 修改时间:2022/7/3/22:57 修改人:Daniel大妞* 修改内容:* */
#endregionusing System.Globalization;
using System.Windows;namespace Simple.CultureInfoView;/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{public MainWindow(){this.InitializeComponent();this.PART_ListView.ItemsSource = CultureInfo.GetCultures(CultureTypes.AllCultures);}
}