【问题标题】:Tooltip culture is wrong工具提示文化是错误的
【发布时间】:2016-09-08 01:20:42
【问题描述】:

我在 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;
    }
}

它适用于TextBoxText 属性,但不适用于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;
    }
}

【问题讨论】:

    标签: c# wpf number-formatting


    【解决方案1】:

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

    <TextBlock>
        <TextBlock.ToolTip>
            <TextBlock Text="{local:Bind Test}"/>
        </TextBlock.ToolTip>
    </TextBlock>
    

    【讨论】:

    • 同样的结果。我没有更改CurrentCultureCurrentUICulture(两者都具有, 作为数字小数点)。关键是为什么ToolTip 不使用它。我可以将其更改为具有一些 exotic 分隔符,例如 CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("ru-Ru") { NumberFormat = new NumberFormatInfo() { NumberDecimalSeparator = "+" } };(先前的覆盖语言),它适用于 Text 没有问题,但被 ToolTip 忽略。
    • @Sinatr 是的,我也面临同样的问题。因此您可以通过在工具提示中添加 TextBlock 并为此工具提示的 TextBlock 绑定相同的 Text="{local:Bind Test}" 来解决此问题。
    • 好主意(将TextBlock 放入TextBlock.ToolTip),将其添加到答案中,我会接受。
    猜你喜欢
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多