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 setzenFormat
alsEnglish (United States)
- gehen
Additional settings/Numbers
undDecimal 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;
}
}
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
@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
Great idea (um 'TextBlock' innen' TextBlock.ToolTip'), füge das zur Antwort hinzu und ich akzeptiere es. – Sinatr