5
我在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)中
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;
}
}
同樣的結果。我不會更改CurrentCulture或CurrentUICulture(都有','作爲數字小數點)。關鍵是爲什麼'ToolTip'不使用它。我可以改變它有一些* exotic *分隔符,比如'CultureInfo.DefaultThreadCurrentCulture = new CultureInfo(「ru-Ru」){NumberFormat = new NumberFormatInfo(){NumberDecimalSeparator =「+」}};''(先前的重寫語言),適用於沒有問題的「文本」,但被「工具提示」忽略。 – Sinatr
@Sinatr是的,我也面臨同樣的問題。因此您可以通過在工具提示中添加TextBlock來解決此問題,併爲此ToolTip的TextBlock綁定相同的Text =「{local:Bind Test}」。 –
Smirti
好主意(把內部''TextBlock.ToolTip' TextBlock' ),將此添加到答案中,我會接受它。 – Sinatr