为什么这行代码
<TextBlock Text="{Binding Net, StringFormat=c}"/>
Run Code Online (Sandbox Code Playgroud)
当我的所有区域设置都设置为UK时,将结果输出为$ xx.xx.我希望它输出为£xx.xx.有任何想法吗?我尝试过stringformat的不同变体,包括StringFormat = {} {0:C},但仍然得到相同的结果.
谢谢你的期待.
就我而言:
我有一个TextBlock绑定到DateTime类型的属性.我希望它显示为用户的区域设置.
<TextBlock Text="{Binding Date, StringFormat={}{0:d}}" />
Run Code Online (Sandbox Code Playgroud)
我将语言属性设置为WPF XAML Bindings和CurrentCulture Display 说:
this.Language = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag);
Run Code Online (Sandbox Code Playgroud)
但是使用这行代码,它只是将文本显示为CultureInfo的默认格式,并使用CurrentCulture的IetfLanguageTag表示,而不是在系统区域设置中选择的有效值表示:
(例如,对于"de-DE" dd.MM.yyyy用于代替选定的yyyy-MM-dd)

有没有一种方法Binding使用正确的格式而不在每个Binding上定义ConverterCulture?
在代码中
string.Format("{0:d}",Date);
Run Code Online (Sandbox Code Playgroud)
使用正确的文化设置.
编辑:
另一种不能按预期工作的方式(比如this.Language = ......):
xmlns:glob="clr-namespace:System.Globalization;assembly=mscorlib"
Run Code Online (Sandbox Code Playgroud)
和
<Binding Source="{x:Static glob:CultureInfo.CurrentCulture}"
Path="IetfLanguageTag"
ConverterCulture="{x:Static glob:CultureInfo.InvariantCulture}" />
Run Code Online (Sandbox Code Playgroud) 假设我的号码是1234567.89.该数字显示在WPF TextBlock中.我正在尝试将StringFormat属性应用于属性,Text以便显示的数字如下:
1.234.567,89
Run Code Online (Sandbox Code Playgroud)
如您所见,千位和小数分隔符与不变文化规范相反.
我已尝试为此设置多种组合StringFormat,但没有成功.这是我提出的最新消息:
Text="{Binding SomeBinding, StringFormat={}{0:#'.'##0','00}}"
Run Code Online (Sandbox Code Playgroud)
但输出不正确.此外,使用N2或改变文化不是一种选择.如果可能的话,我想避免使用转换器.
那么,有没有办法通过XAML更改默认分隔符?