Mam TextBox, który doprowadza mnie do szaleństwa ze względu na sposób automatycznego formatowania podczas wprowadzania liczb.
Na przykład chcę wprowadzić -0.00004, ale w trakcie pisania TextBox usuwa znak ujemny, gdy tylko wpiszesz pierwszy 0.
Następnie wypróbowałem -00004, który nie usuwa negatywnego znaku podczas pisania ., ale zaraz po naciśnięciu 0 usuwa -
i .
.
Jedynym sposobem, w jaki udało mi się zachować zachowanie TextBoxa, jest wejście 0.00004
po pierwsze, które następnie autoformatuje 4E-05
, a następnie dodaj znak ujemny z przodu. Albo mogę wejść -4E-5
, które następnie autoformatuje do -4E-05
, co jest w porządku, ale jeśli wejdę -4E-05
temu E
Pobiera spadła tak szybko, jak I naciśnij 0.
Co mam nadzieję, jest sposób, aby wyłączyć to zachowanie z wbudowanych właściwości pewnego rodzaju, ale jeśli on nie istnieje, pisanie IValueConverter
może być moją jedyną opcją.
Odpowiedzi:
1 dla odpowiedzi № 1Jednym ze sposobów obejść auto formatowanie jest użycie IValueConverter
na podwójne właściwości powiązania. Trzeba będzie dodać logikę do Convert
Metoda konwersji z double do string i ConvertBack
Metoda konwersji z string do double. Tutaj "s Artykuł MSDN z przykładem.
<TextBox Text="{Binding Number, Converter={StaticResource NumToStrConverter}}"/>
Innym sposobem byłoby ustawić StringFormat
w wiązaniu liczbę z liczbą miejsc dziesiętnych do pokazania.Spójrz tutaj w przypadku innych formatów.
<TextBox Text={Binding Number, StringFormat=N10}"/>