Laden...

DataGrid - RowEditEnding Event wird bei nur eine Zeile nicht ausgelöst ?

Erstellt von _Cashisclay vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.747 Views
_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 4 Jahren
DataGrid - RowEditEnding Event wird bei nur eine Zeile nicht ausgelöst ?

Hallo zusammen,

mein RowEditEnding Event wird nicht ausgelöst, wenn sich nur eine Zeile im Steuerelement befindet, es sei denn man klickt auf ein anderes Steuerelement dann merkt das DataGrid wohl das es keinen Focus mehr hat, selbst beim TabItem Wechsel wird es nicht ausgelöst.

Hat damit jemand schon Erfahrungen sammeln können?

            <DataGrid   ItemsSource="{Binding DataGridExtraTubesItemsSource, UpdateSourceTrigger=PropertyChanged}"
                            SelectedItem="{Binding DataGridExtraTubesSelectedItem, UpdateSourceTrigger=PropertyChanged}"
                        Style="{StaticResource BaseDataGrid}"
                            RowStyle="{StaticResource BaseDataGridRow}"
                        x:Name="DataGridExtraTubes">

                <i:Interaction.Triggers>

                    <i:EventTrigger EventName="RowEditEnding">

                        <i:InvokeCommandAction Command="{Binding DataGridExtraTubesRowEditEndingCommand}" CommandParameter="{Binding ElementName=DataGridExtraTubes, Path=SelectedItem}"/>

                    </i:EventTrigger>

                </i:Interaction.Triggers>

            </DataGrid>

Grüße

1.040 Beiträge seit 2007
vor 4 Jahren

Wann wird es denn ausgelöst, wenn du mehr als eine Zeile hast?
Normalerweise sollte das Verhalten dann auch so sein, wenn du z.B. den Tab verlässt.

Klickst du bei mehreren Zeilen in eine andere Zeile?

_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 4 Jahren

Wenn du zwei Zeilen hast und zwischen der ersten und zweiten wechselst wird es ausgelöst.
Existiert nur eine Zeile und ich wechsel den Tab passiert nichts, klick ich aber auf ein anderes Control wird es wieder ausgelöst.

1.040 Beiträge seit 2007
vor 4 Jahren

Ja, d.h. wenn du bei zwei oder mehr Zeilen nicht die Zeile wechselst und den Tab verlässt, wird es auch nicht ausgelöst, richtig?
Das Problem besteht also auch bei mehreren Zeilen, wenn die Zeile nicht den Fokus verliert passiert nichts.

_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 4 Jahren

So gesehen .. Richtig 🙁

_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 4 Jahren

Und was kann ich da am besten machen?

_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 4 Jahren

Hab es jetzt über das MouseLeave Event gesteuert, gefällt mir zwar nicht, aber mir fällt auch nichts besseres ein

F
10.010 Beiträge seit 2004
vor 4 Jahren

Was hattest du denn wirklich vor?
Denn editieren von Daten in einem DataGrid ist definitiv die falsche herangehensweise.

_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 4 Jahren

Weil?

W
955 Beiträge seit 2010
vor 4 Jahren

Warum verwendest du eigentlich nicht MVVM? Dann kannst du doch den Command aufrufen wenn sich ein Setter ändert.

F
10.010 Beiträge seit 2004
vor 4 Jahren

Weil?

Weil 30 Jahre SW Entwicklung gezeigt haben das es die falsche Herangehensweise ist.

Und beim verlassen der Zeile automatisch speichern wird dir auch über kurz oder lang auf die Füße fallen.

_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 4 Jahren

Warum verwendest du eigentlich nicht MVVM? Dann kannst du doch den Command aufrufen wenn sich ein Setter ändert.

Ich verwende MVVM, aber es gibt ja ein passendes Event zu der Geschichte deswegen fand ich es auch angebracht das zu benutzen. Aber ja man könnte es auch über den Setter machen nur wird dann ja jeder Änderung geschrieben, mir reicht es ja wenn die letzte Auswahl vom Benutzer gespeichert wird.

Weil 30 Jahre SW Entwicklung gezeigt haben das es die falsche Herangehensweise ist.

Und beim verlassen der Zeile automatisch speichern wird dir auch über kurz oder lang auf die Füße fallen.

Und wie sieht die richtige Herangehensweise aus?

F
10.010 Beiträge seit 2004
vor 4 Jahren

ListView/DataGrid zur Anzeige und Auswahl und dann einen DetailView zur Eingabe.
Zum speichern einen Button, dann kann man auch jederzeit ein Undo machen.