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 impostareFormat
comeEnglish (United States)
- andare
Additional settings/Numbers
e cambiareDecimal 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;
}
}
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
@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
Grande idea (per mettere '' TextBlock' all'interno TextBlock.ToolTip'), aggiungi questo alla risposta e io lo accetterò. – Sinatr