我在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)
控制面板/区域和语言/格式
并将格式
设置为English (United States)
- 进入
其他设置/数字
并将小数符号
从.
更改为,
- 创建新的wpf应用程序,复制xaml,添加语言覆盖,添加转换器并设置:
public partial class MainWindow : Window
{
public double Test { get; set; } = 1.234567;
public MainWindow()
{
InitializeComponent();
DataContext = this;
}
}
CurrentCulture
或CurrentUICulture
(两者都使用,
作为数字小数点)。问题是为什么ToolTip
没有使用它。我可以将其更改为具有某些 奇特 分隔符,例如CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("ru-Ru") { NumberFormat = new NumberFormatInfo() { NumberDecimalSeparator = "+" } };
(在覆盖语言之前),这对于Text
没有问题,但被ToolTip
忽略。 - Sinatr<TextBlock Text="{local:Bind Test}"/> </TextBlock.ToolTip> </TextBlock> - Smirti