Chr*_*ann 61 c# wpf xaml datetime
我在输出DateTime值时遇到了一些麻烦.我的计算机目前的文化设置为de-AT(奥地利).
以下代码
string s1 = DateTime.Now.ToString("d");
string s2 = string.Format("{0:d}", DateTime.Now);
Run Code Online (Sandbox Code Playgroud)
结果s1和s2都具有正确的值"30.06.2009".
但是在XAML中使用相同的格式时
<TextBlock Text="{Binding Source={x:Static sys:DateTime.Now}, StringFormat=d}"/>
Run Code Online (Sandbox Code Playgroud)
输出是"6/30/2009".似乎XAML StringFormat忽略了当前的文化设置.这种情况发生在Vista和XP上.
我不想指定自定义格式,因为输出应该在用户首选的文化设置中格式化.
有同样问题的人吗?这是WPF中的错误吗?
Ste*_*olt 15
要应用http://tinyurl.com/b2jegna中提到的解决方案,请执行以下操作:
(1)在app.xaml中向Application类添加一个Startup事件处理程序:
<Application x:Class="MyApp"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
...
Startup="ApplicationStartup">
Run Code Online (Sandbox Code Playgroud)
(2)添加处理函数:
private void ApplicationStartup(object sender, StartupEventArgs e)
{
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
}
Run Code Online (Sandbox Code Playgroud)
然后应根据文化正确格式化WPF字符串.
如果您想要一种特定的语言,则可以使用在顶级元素上进行设置xml:lang。
例如:
<Window xml:lang="de-AT">
...
</Window>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68370 次 |
| 最近记录: |