2017-10-05 3 views
0

J'ai une grille de données liée à une collection observable, lorsque j'essaie d'éditer une cellule, la ligne entière est éditée aussi. J'ai déjà essayé beaucoup de choses pour ne pas profiter. J'ai même codé en dur un index spécifique afin que seule la cellule sélectionnée soit mise à jour. Le code ci-dessous m'amène à la cellule exacte mais met à jour tout le rang. Que puis-je faire?Mise à jour de la mise à jour de la base de données wpf pleine ligne dans une cellule unique

<DataGrid Name="timetableGrid" AutoGenerateColumns="True" SelectionMode="Single" GridLinesVisibility="None" 
         CellEditEnding="timetableGrid_CellEditEnding" ItemsSource="{Binding Path=TimetableControlDetailsData, Mode=OneWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}" 
        IsSynchronizedWithCurrentItem="False" SelectionUnit="Cell" CurrentCell="{Binding CellInfo, Mode=OneWayToSource}" > 

       </DataGrid> 



private DataGridCellInfo _cellInfo; 
public DataGridCellInfo CellInfo 
{ 
    get { return _cellInfo; } 
    set 
    { 
     _cellInfo = value; 
     OnPropertyChanged("CellInfo"); 
    } 
} 

private void timetableGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) 
{ 
     var test = _vm.CellInfo; 
     var test1 = test.Item as TimetableControlDetail; 

     var xs = _vm.TimetableControlDetailsData.Where(c => c.DayID == test1.DayID && c.PeriodID == test1.PeriodID).ToList(); 
     var x = _vm.TimetableControlDetailsData.Where(c => c.DayID == test1.DayID && c.PeriodID == test1.PeriodID).FirstOrDefault(); 
     x.ClassInstanceDetail.ClassName = "excellent!"; 
} 

après avoir traversé l'événement cellediting, le code ci-dessus dans le cellediting me donner seulement 1 point var x, mais l'ensemble du texte de la ligne est mis à jour en excellent! aussi. Je veux seulement changer la cellule actuelle exacte. merci

Répondre

0

Ce n'est pas une solution parfaite. Mais pourquoi n'essaierais-tu pas de sortir toute la ligne de mise à jour d'une cellule mais de la renvoyer?