2016-05-12 70 views
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; 
    } 
} 

它適用於TextBoxText財產,但它不適用於ToolTip

要真正明白我的顯示在屏幕截圖:

  • 去(Windows 7)中Control Panel/Region and Language/Formats,並設置FormatEnglish (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; 
    } 
} 

回答

4

我也面臨同樣的問題。因此,您可以通過在ToolTip內部添加TextBlock來解決此問題,併爲此ToolTip的TextBlock綁定相同的Text="{local:Bind Test}"

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

同樣的結果。我不會更改CurrentCulture或CurrentUICulture(都有','作爲數字小數點)。關鍵是爲什麼'ToolTip'不使用它。我可以改變它有一些* exotic *分隔符,比如'CultureInfo.DefaultThreadCurrentCulture = new CultureInfo(「ru-Ru」){NumberFormat = new NumberFormatInfo(){NumberDecimalSeparator =「+」}};''(先前的重寫語言),適用於沒有問題的「文本」,但被「工具提示」忽略。 – Sinatr

+0

@Sinatr是的,我也面臨同樣的問題。因此您可以通過在工具提示中添加TextBlock來解決此問題,併爲此ToolTip的TextBlock綁定相同的Text =「{local:Bind Test}」。 Smirti

+0

好主意(把內部''TextBlock.ToolTip' TextBlock' ),將此添加到答案中,我會接受它。 – Sinatr

相關問題