Autor Beitrag
navigato
Hält's aus hier
Beiträge: 14
Erhaltene Danke: 1

Win7
C#,Firebird
BeitragVerfasst: Mi 15.02.12 18:02 
Liebe WPF-Experten-Gemeinde,

Dieses DataGrid
ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<DataGrid AutoGenerateColumns="False" Height="300" HorizontalAlignment="Stretch" 
          VerticalAlignment="Stretch" Name="dgOriginal" Margin="4,12,0,0"
          CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" IsSynchronizedWithCurrentItem="True" 
          CanUserSortColumns="False" SelectionMode="Single" SelectionUnit="FullRow">
    <DataGrid.Columns>
        <DataGridCheckBoxColumn x:Name="col2Checked"/>
        <DataGridTextColumn x:Name="col2Name"/>
        <DataGridTextColumn x:Name="col2Vorname"/>
    </DataGrid.Columns>            
</DataGrid>

welches ein gebundene Liste fehlerfrei darstellt, zeigt ein für mich merkwürdiges Verhalten, wenn es den Eingabfocus erneut erhält:
Zunächst wählt der Benutzer eine Zeile aus, die korrekt selektiert dargestellt wird (SelectedItem und auch CurrentItem beinhalten dann das selektierte Objekt). Darauf wird der Eingabefocus auf ein anderes Control verschoben (in diesem Status ist dann SelectedItem weiterhin vorhanden, die gewählte Zeile wird ja auch weiterhin als selektiert dargestellt, CurrentItem hingegen ist null!). Und nun erhält das DataGrid erneut den Eingabefocus, indem der Benutzer seine Tab-Taste benutzt, was das DataGrid dazu veranlasst, als CurrentItem das erste Objekt, dass dargestellt wird, zu wählen, während das SelectedItem unverändert bleibt. CurrentItem und SelectedItem sind dann zwei völlig verschiedene Objekte. Ich frage mich da als Benutzer was das soll!

Meine Fragen wären:
1. Wie kann man es schaffen, dass CurrentItem und SelectedItem immer synchronisiert sind? Ich habe versucht eine eigene DataGrid-Klasse zu schreiben, die von DataGrid erbt und in OnCurrentCellChanged einfach immer SelectedItem = CurrentItem setzt, was aber irgendwie zu Ruckeln führt.
2. Wie kann man dem DataGrid beibringen, dass es beim erneuten Erhalten des Eingabefocus als CurrentItem wieder das SelectedItem wählt? Das darf es selbstverständlich nur dann machen, wenn der Eigabefocus nicht mit der Maus auf das DataGrid gesetzt wurde, denn dann will der Benutzer ja möglicherweise ein ganz anderes Objekt wählen. Ich habe da bereits diverse Versuche unternommen, die alle gescheitert sind, diverse Suchen im Internet haben mich nicht schlauer gemacht...

Ich hoffe, dass es für das Problem eine einfache Lösung gibt, denn wer will schon ein DataGrid, das "irgendwelche" Daten selektiert anzeigt!