工具提示的文化是错误
问题描述:
我在XAML:工具提示的文化是错误
<TextBlock Text="{local:Bind Test}" ToolTip="{local:Bind Test}" />
,这里是截图(用放大镜):
我的问题是什么是怎么回事?为什么工具提示显示不同的值(小数点是.
,而预期的是,
)?
更长的故事:
我试图在用户的Windows数字格式的喜好来显示相同数字的格式。
为此,我已经覆盖显示窗口(覆盖App.OnStartup)之前的语言:
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
而且使用下面的自定义绑定(设置默认转换器文化)
public class Bind : Binding
{
public Bind(string path) : base(path)
{
ConverterCulture = CultureInfo.CurrentCulture;
}
}
它适用于TextBox
的Text
财产,但它不适用于ToolTip
。
要真正明白我的显示在屏幕截图:
- 去(Windows 7)中
Control Panel/Region and Language/Formats
,并设置Format
为English (United States)
- 去
Additional settings/Numbers
和.
改变Decimal symbol
到,
- 创建新的WPF应用程序,复制xaml,添加语言覆盖,添加转换器并设置:
public partial class MainWindow : Window
{
public double Test { get; set; } = 1.234567;
public MainWindow()
{
InitializeComponent();
DataContext = this;
}
}
答
我也面临同样的问题。因此,您可以通过在ToolTip
内部添加TextBlock
来解决此问题,并为此ToolTip的TextBlock绑定相同的Text="{local:Bind Test}"
。
<TextBlock>
<TextBlock.ToolTip>
<TextBlock Text="{local:Bind Test}"/>
</TextBlock.ToolTip>
</TextBlock>
同样的结果。我不会更改CurrentCulture或CurrentUICulture(都有','作为数字小数点)。关键是为什么'ToolTip'不使用它。我可以改变它有一些* exotic *分隔符,比如'CultureInfo.DefaultThreadCurrentCulture = new CultureInfo(“ru-Ru”){NumberFormat = new NumberFormatInfo(){NumberDecimalSeparator =“+”}};''(先前的重写语言),适用于没有问题的“文本”,但被“工具提示”忽略。 – Sinatr
@Sinatr是的,我也面临同样的问题。因此您可以通过在工具提示中添加TextBlock来解决此问题,并为此ToolTip的TextBlock绑定相同的Text =“{local:Bind Test}”。 –
Smirti
好主意(把内部''TextBlock.ToolTip' TextBlock' ),将此添加到答案中,我会接受它。 – Sinatr