Ich habe ein seltsames Problem in einer WPF-Anwendung. Der Benutzer soll Rechnungen mit mindestens einer Zeile in ein DataGrid eingeben. Ein Feld enthält den Betrag, so dass es wie i,ff
aussieht, d. H. Der ganzzahlige Teil mit mindestens einer Ziffer, einem Komma (ich bin in Europa) und zwei Nachkommastellen.Geldwerte in WPF-Formular bearbeiten
Wenn der Benutzer in das Feld fokussiert, kann der integrale Teil überschrieben werden, das Komma bleibt fixiert und der Bruchteil kann auch überschrieben werden. Der Benutzer gibt also den Integralteil ein und muss dann mit dem Cursor nach rechts über das Komma springen und dann den Bruchteil des Betrags eingeben.
Dieses Verhalten wurde von meinen Benutzern als Buchhalter kritisiert und verwendet, um den gesamten Betrag auf einmal einzugeben. Meine Frage ist also: Gibt es eine Möglichkeit, das gesamte Feld überschreibbar zu machen? Hier
ist das XAML für das Datagrid-Spalte:
<DataGridTextColumn x:Name="colBetBtto"
Header="Brutto"
HeaderStyle="{StaticResource DataGridHeaderRightAligned}"
Width="*"
CellStyle="{StaticResource DataGridCellRightAligned}"
Binding="{Binding Path=BttoBetrag, Mode=TwoWay, StringFormat=N2, UpdateSourceTrigger=PropertyChanged}">
</DataGridTextColumn>
Die Zelle Stil ist:
<Style x:Key="DataGridCellRightAligned" TargetType="DataGridCell">
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="TextBlock.TextAlignment" Value="Right" />
<Setter Property="Padding" Value="0,0,1,0" />
</Style>
Irgendwelche Ideen, was dieses Verhalten verursacht?
mm8 danke Ihnen nochmals für Ihre Hilfe:
Sie können auch die
StringFormat
auf dieTextBox
anwenden möchten.Ihre vorgeschlagene Lösung funktioniert so, dass während der Bearbeitung das Komma weg ist, aber der Benutzer zweimal auf die Zelle klicken muss, um den Wert zu bearbeiten. Was ich brauche, ist, dass mit Tab-Sequenz oder mit einem einzigen Klick der gesamte Zellwert ausgewählt und geändert werden kann. –Bitte sehen Sie meine Bearbeitung. Aber bitte stellen Sie eine neue Frage, wenn Sie ein anderes Problem haben. – mm8
Sorry mm8, das ist immer noch das gleiche Problem. Was ich erwarte, ist, dass der Benutzer in das Spaltenfeld klickt oder klickt. Dann sollte ** der gesamte Inhalt hervorgehoben werden und der Benutzer kann einen Betrag eingeben, der aus Ziffern, einem Komma und wieder Ziffern besteht, die den vorherigen Inhalt überschreiben. Bei meiner ursprünglichen Version wurde nur der ganzzahlige Teil des Betrags bis zum Komma (dh Komma) ausgewählt. Mit Ihrem Vorschlag gibt es kein Komma (da die Textbox kein Format in der CellEditingTemplate hat), aber der Inhalt der Zelle ist nicht ausgewählt und um sie zu bearbeiten, muss der Benutzer darauf doppelklicken oder löschen –