我在 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)));
并使用以下自定义绑定(bind)(默认设置转换器文化)
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 绑定(bind)相同的 Text="{local:Bind Test}"
来解决此问题还有。
<TextBlock>
<TextBlock.ToolTip>
<TextBlock Text="{local:Bind Test}"/>
</TextBlock.ToolTip>
</TextBlock>
关于c# - 工具提示文化是错误的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37182987/