相关疑难解决方法(0)

WPF StringFormat = {0:C}显示为美元

为什么这行代码

<TextBlock Text="{Binding Net, StringFormat=c}"/>
Run Code Online (Sandbox Code Playgroud)

当我的所有区域设置都设置为UK时,将结果输出为$ xx.xx.我希望它输出为£xx​​.xx.有任何想法吗?我尝试过stringformat的不同变体,包括StringFormat = {} {0:C},但仍然得到相同的结果.

谢谢你的期待.

wpf binding currency regional string-formatting

44
推荐指数
3
解决办法
4万
查看次数

在WPF Binding中使用"真正的"CultureInfo.CurrentCulture,而不是来自IetfLanguageTag的CultureInfo

就我而言:

我有一个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)

区域设置:不是默认设置,而是使用yyy-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)

c# wpf binding currentculture

37
推荐指数
3
解决办法
4万
查看次数

更改绑定中的默认千位和小数分隔符

假设我的号码是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更改默认分隔符?

c# wpf xaml string-formatting

6
推荐指数
1
解决办法
8217
查看次数