WPFの地域設定
Thread.CurrentCultureはOSの地域設定から自動で設定されるが、XmlLanguageはOSの既定の設定によらずen-US固定のようです。
例えば、以下のようにXAMLで画面を作ると、
<Windowx:Class="WPF.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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPF"
mc:Ignorable="d"
Title="MainWindow"Height="450"Width="800">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlockText="{Binding Now}"/>
</Grid>
</Window>
publicpartialclassMainWindow : Window
{
publicMainWindow()
{
InitializeComponent();
this.DataContext = new {
Now = DateTime.Now
};
}
}
表示されるの時刻はUS形式になる。
こんな方法でOSの設定を反映できる。
publicMainWindow()
{
this.Language = System.Windows.Markup.XmlLanguage.GetLanguage(System.Threading.Thread.CurrentThread.CurrentCulture.Name);
InitializeComponent();
this.DataContext = new {
Now = DateTime.Now
};
}
日本でしか使わないなら、XAMLにxml:langを設定してしまうのもあり。
<Windowx:Class="WPF.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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPF"
mc:Ignorable="d"
xml:lang="ja-JP"
Title="MainWindow"Height="450"Width="800">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlockText="{Binding Now}"/>
</Grid>
</Window>
コメント
コメントを投稿