2016-05-12 9 views
5

ho in XAML:cultura Tooltip è sbagliato

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

Ed ecco screenshot (utilizzando lente d'ingrandimento):

La mia domanda è che cosa sta succedendo qui? Perché la descrizione comando visualizza il valore in modo diverso (il punto decimale è . mentre è previsto ,)?


più lunga storia:

Sto cercando di visualizzare i numeri di stesso formato nelle preferenze Formato numero di Windows dell'utente.

Per questo ho ignorare la lingua prima finestra (sovrascrivendo App.OnStartup) visualizzando:

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

E l'utilizzo secondo l'usanza di legame (per impostare la cultura convertitore di default)

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

E ' funziona per la proprietà Text di TextBox, ma non funziona per ToolTip.

per vedere effettivamente quello che faccio vedere lo screenshot:

  • go (Windows 7) Control Panel/Region and Language/Formats e impostare Format come English (United States)
  • andare Additional settings/Numbers e cambiare Decimal symbol.-,
  • creare nuova applicazione WPF, copia xaml, aggiungi override lingua, aggiungi convertitore e imposta:

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

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

risposta

4

Anche io sto affrontando lo stesso problema. In questo modo puoi risolvere questo problema aggiungendoall'interno dello ToolTip e associare lo stesso Text="{local:Bind Test}" anche a questo oggetto TextBlock.

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

Stesso risultato. Non sto cambiando 'CurrentCulture' o' CurrentUICulture' (entrambi aventi ',' come numero decimale). Il punto è perché 'ToolTip' non lo usa. Posso cambiarlo per avere qualche separatore * exotic *, come 'CultureInfo.DefaultThreadCurrentCulture = new CultureInfo (" ru-Ru ") {NumberFormat = new NumberFormatInfo() {NumberDecimalSeparator =" + "}};' (lingua prioritaria precedente), che funziona per 'Text' senza problemi, ma viene ignorato da' ToolTip'. – Sinatr

+0

@Sinatr Sì, anche io sto affrontando lo stesso problema. quindi puoi risolvere questo problema aggiungendo TextBlock all'interno del tooltip e associando lo stesso Text = "{local: Bind Test}" anche a TextBlock di questo ToolTip. Smirti

+0

Grande idea (per mettere '' TextBlock' all'interno TextBlock.ToolTip'), aggiungi questo alla risposta e io lo accetterò. – Sinatr