2016-05-12 3 views
5

ich in XAML haben:Tooltip Kultur ist falsch

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

Und hier Screenshot wird (mit Lupe):

Meine Frage ist, was ist hier los? Warum zeigt Tooltip den Wert anders an (Dezimalpunkt ist ., während , erwartet wird)?


Längere Geschichte:

ich Zahlen versuche wie in Windows-Benutzernummer Formateinstellungen in demselben Format angezeigt werden soll.

Dazu habe ich die Sprache außer Kraft setzen, bevor Fenster anzuzeigen (Überschreiben App.OnStartup):

FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), 
    new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); 

Und mit folgenden benutzerdefinierten Bindung (Konverter Kultur standardmäßig eingestellt)

public class Bind : Binding 
{ 
    public Bind(string path) : base(path) 
    { 
     ConverterCulture = CultureInfo.CurrentCulture; 
    } 
} 

Es funktioniert für Text Eigenschaft von TextBox, aber es funktioniert nicht für ToolTip.

tatsächlich sehen, was ich auf den Screenshot zeigen:

  • go (Windows 7) Control Panel/Region and Language/Formats und setzen Format als English (United States)
  • gehen Additional settings/Numbers und Decimal symbol.-,
  • neue WPF-Anwendung erstellen ändern, Kopieren Sie XAML, fügen Sie eine Sprachüberschreibung hinzu, fügen Sie einen Konverter hinzu und setzen Sie:

public partial class MainWindow : Window 
{ 
    public double Test { get; set; } = 1.234567; 

    public MainWindow() 
    { 
     InitializeComponent(); 
     DataContext = this; 
    } 
} 

Antwort

4

Ich bin auch mit dem gleichen Problem konfrontiert. Sie können das also lösen, indem Sie innerhalb des ToolTipTextBlock hinzufügen und denselben Text="{local:Bind Test}" für den TextBlock dieses ToolTip auch binden.

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

Gleiches Ergebnis. Ich ändere nicht 'CurrentCulture' oder' CurrentUICulture' (beide mit ',' als Zahl Dezimalpunkt). Der Grund ist, warum 'ToolTip' es nicht benutzt. Ich kann es ändern, um ein * exotisches * Trennzeichen zu haben, wie 'CultureInfo.DefaultThreadCurrentCulture = neues CultureInfo (" ru-Ru ") {NumberFormat = neues NumberFormatInfo() {NumberDecimalSeparator =" + "}};' (vorhergehende übergeordnete Sprache), das funktioniert für 'Text' ohne Problem, wird aber von' ToolTip' ignoriert. – Sinatr

+0

@Sinatr Ja, ich habe auch das selbe Problem. Sie können dies also beheben, indem Sie TextBlock innerhalb der QuickInfo hinzufügen und denselben Text = "{local: Bind Test}" für den TextBlock dieser QuickInfo binden. Smirti

+0

Great idea (um 'TextBlock' innen' TextBlock.ToolTip'), füge das zur Antwort hinzu und ich akzeptiere es. – Sinatr