工具提示文化是错误的
Tooltip culture is wrong
我有 xaml:
<TextBlock Text="{local:Bind Test}" ToolTip="{local:Bind Test}" />
这是屏幕截图(使用放大镜):
我的问题是这里发生了什么?为什么工具提示显示不同的值(小数点是 .
而 ,
是预期的)?
长话短说:
我正在尝试以与用户 Windows 数字格式首选项中相同的格式显示数字。
为此,我在显示 window 之前覆盖了语言(覆盖 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
。
要实际查看我在屏幕截图上显示的内容:
- go (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
并为此工具提示的 TextBlock 绑定相同的 Text="{local:Bind Test}"
来解决此问题。
<TextBlock>
<TextBlock.ToolTip>
<TextBlock Text="{local:Bind Test}"/>
</TextBlock.ToolTip>
</TextBlock>
我有 xaml:
<TextBlock Text="{local:Bind Test}" ToolTip="{local:Bind Test}" />
这是屏幕截图(使用放大镜):
我的问题是这里发生了什么?为什么工具提示显示不同的值(小数点是 .
而 ,
是预期的)?
长话短说:
我正在尝试以与用户 Windows 数字格式首选项中相同的格式显示数字。
为此,我在显示 window 之前覆盖了语言(覆盖 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
。
要实际查看我在屏幕截图上显示的内容:
- go (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
并为此工具提示的 TextBlock 绑定相同的 Text="{local:Bind Test}"
来解决此问题。
<TextBlock>
<TextBlock.ToolTip>
<TextBlock Text="{local:Bind Test}"/>
</TextBlock.ToolTip>
</TextBlock>