Ber*_*ler 3 wpf localization datepicker
在小型Wpf应用程序中,使用绑定到DateTime属性的DatePicker.当用户的区域和语言设置以及数字和日期格式为德语时,日期将以德语显示,日历将显示德语月份名称.现在我想用美式英语.在MainWindow的c'tor中,我在InitializeComponent()之前添加了(在InitializeComponent()之后执行此操作时的情况相同):
string uiLanguage = ConfigurationManager.AppSettings["UILanguage"]; //"en-US"
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(uiLanguage);
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(uiLanguage)));
Run Code Online (Sandbox Code Playgroud)
虽然它适用于文本框,但它对DatePicker没有影响.然后我很傻,创建了一个新用户"约翰英语",以"约翰英语"登录,将他的显示语言设置为英语,日期和数字格式设置为美国英语.现在,DatePicker始终以美国 - 英语格式显示日期,日历显示英文月份名称,即使我将程序的语言设置为德语.怎么解决这个问题?可以解决吗?
在App.xaml的代码隐藏中添加以下代码:
public App()
{
EventManager.RegisterClassHandler(typeof(DatePicker), DatePicker.LoadedEvent, new RoutedEventHandler(DatePicker_Loaded));
}
void DatePicker_Loaded(object sender, RoutedEventArgs e)
{
var dp = sender as DatePicker;
if (dp == null) return;
var tb = GetChildOfType<DatePickerTextBox>(dp);
if (tb == null) return;
var wm = tb.Template.FindName("PART_Watermark", tb) as ContentControl;
if (wm == null) return;
wm.Content = "[Put your text here]";
}
Run Code Online (Sandbox Code Playgroud)
[Ontopic;)]尝试设置CurrentCulture和CurrentUICulture.
//Set default culture to Nl
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Run Code Online (Sandbox Code Playgroud)
ref for GetChildOfType
| 归档时间: |
|
| 查看次数: |
8205 次 |
| 最近记录: |