工具提示文化是错误的

Sin*_*atr 6 c# wpf number-formatting

我在xaml:

<TextBlock Text="{local:Bind Test}" ToolTip="{local:Bind Test}" />
Run Code Online (Sandbox Code Playgroud)

这里是截图(使用放大镜):

我的问题是这里发生了什么?为什么显示工具提示值不同(小数点.,而,预期)?


更长的故事:

我试图以与用户Windows数字格式首选项相同的格式显示数字.

为此,我在显示窗口之前覆盖了语言(覆盖App.OnStartup):

FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
    new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
Run Code Online (Sandbox Code Playgroud)

并使用以下自定义绑定(默认设置转换器文化)

public class Bind : Binding
{
    public Bind(string path) : base(path)
    {
        ConverterCulture = CultureInfo.CurrentCulture;
    }
}
Run Code Online (Sandbox Code Playgroud)

它适用于Text属性TextBox,但它不起作用ToolTip.

要真正看到我在截图上显示的内容:

  • go(Windows 7)Control Panel/Region and Language/Formats并设置FormatEnglish (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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Smi*_*rti 4

我也面临着同样的问题。因此,您可以通过在 ToolTip 的 TextBlock 中TextBlock添加ToolTip并绑定相同的内容来解决此问题。Text="{local:Bind Test}"

<TextBlock>
    <TextBlock.ToolTip>
        <TextBlock Text="{local:Bind Test}"/>
    </TextBlock.ToolTip>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)