Ho un problema davvero strano relativo a .NET 4.5. Oggi un utente mi ha detto che non è in grado di inserire numeri mobili in una casella di testo (come "2.75"). La casella di testo non accetta ".", Che è il "separatore" corretto per i numeri mobili nella mia cultura ("de-CH").Problemi di TextBox strano con .NET 4.5 - no '.' consentito
Questo problema si è verificato dopo aver compilato il software con .NET 4.5 (in precedenza era 4.0).
Posso riprodurre questo errore. Tutte le altre caselle di testo nell'applicazione funzionano correttamente. La casella di testo è un normale controllo WPF. Nessun controllo definito dall'utente o qualcosa di simile.
Ancora: la casella di testo non accetta "." come personaggio. Sembra che lo ignori completamente. Ogni altro personaggio (anche quelli speciali come "@") va bene. La ricompilazione dell'applicazione su .NET 4.0 risolve il problema.
il codice XAML per la casella di testo è:
<TextBox x:Name="_Hours" Grid.Row="9" Grid.Column="1" VerticalAlignment="Center"
TextAlignment="Center" FontWeight="Bold" FontSize="16" Text="{Binding ProcessHours,
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" TextChanged="Hours_TextChanged" />
Definizione ProcessHours:
partial class ProjectTask
{
...
public double TotalProcessHours { get { return ProjectBookings.Sum(b =>
b.ProcessHours); }}
...
}
Hours_TextChanged è:
private void Hours_TextChanged(object sender, TextChangedEventArgs e)
{
UpdateHoursValidity();
}
UpdateHoursValidity() si affievolisce solo un messaggio di testo al di sotto del reale casella di testo. Non è collegato alla casella di testo "interrotta" in alcun modo:
Quindi niente di speciale neanche qui.
quello che ho provato finora: - rimuovere la casella di testo, ricompilare, aggiungendo ancora una volta la casella di testo, ricompilare -> stessa situazione
Impostare la proprietà Language della casella di testo specifico in XAML (Language = de- CH)
Impostazione della cultura in base a questi suggerimenti: how to set default culture info for entire c# application
Impostare la cultura in base a questo blogpost: http://www.west-wind.com/weblog/posts/2009/Jun/14/WPF-Bindings-and-CurrentCulture-Formatting
non c'è un messaggio sul debugconsole quando cerco di entrare in un "".
Qualche idea su questo?
Grazie in anticipo!
Mostraci la proprietà ProcessHours. È quella proprietà di tipo Int? Stai vincolando TextBox a un intero? –
Oops. Ho pubblicato la proprietà sbagliata. Mi dispiace per quello La risposta di Sheridan ha risolto il mio problema. Ma grazie per l'aiuto comunque! – Mathew
Ok allora evviva :) –