【发布时间】:2016-05-05 17:01:19
【问题描述】:
我有以下 XAML:
<Window x:Class="String_Format.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:s="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
Title="MainWindow" Height="150" Width="250">
<StackPanel Margin="10">
<TextBlock Name="TextBlock" Text="{Binding Source={x:Static s:DateTime.Now}, StringFormat=Date: {0:dddd, MMMM dd}}"/>
</StackPanel>
</Window>
在 Visual Studio 2015 的 XAML 设计器以及正在运行的应用程序中,这显示为:“日期:1 月 28 日,星期四”。由于我使用的是德语 Windows 7,区域设置设置为“德语(德国)”,因此我实际上预期的是:“日期:Donnerstag,1 月 28 日”。
所以我去添加了命名空间
xmlns:c="clr-namespace:System.Globalization;assembly=mscorlib"
并将我的 TextBlock 更改为:
<TextBlock Name="TextBlock" Text="{Binding Source={x:Static s:DateTime.Now}, ConverterCulture={x:Static c:CultureInfo.CurrentCulture}, StringFormat=Date: {0:dddd, MMMM dd}}"/>
这确实会在运行时产生我想要的行为,但在 XAML 设计器中,它显示“无效标记”,并且没有显示我的窗口的预览。
有人问过before,但我想在 XAML 中完成,尽可能不使用代码。
那么我的 XAML 出了什么问题?我想了解。
【问题讨论】:
-
不完全!是的,这确实回答了更简单的解决方案的问题。但我仍然想了解为什么我不能在 XAML 中这样做。我对 XAML 很陌生,我想我在这里错过了一些基本概念!?
-
您可以使用自定义绑定来完成,可以在这里找到:stackoverflow.com/questions/5831455/…
标签: c# wpf xaml globalization