2016-11-03 4 views
0

Ich verwende WPF mit MVVM-Muster. Ich habe Datagrid, das die AutoGeneratedColumns hat. Ich habe die itemSource von viewModel an mein dataGrid gebunden. Das Problem ist: Ich habe Knopf und mit seinem Befehl versuche ich, die DataGridSource von viewModel zu aktualisieren. Aber selbst wenn ich sie auf Code setze, hat das keinen Einfluss. Ich habe auch auf Debug überprüft und festgestellt, dass es nicht geändert wird und den vorherigen Wert beibehalten. Was könnte der Grund sein? HierData Grid Source wird nicht aktualisiert

ist der Code:

XAML:

<DataGrid ItemsSource="{Binding DataGridSource}" ColumnHeaderStyle="{StaticResource CenterAlignedDataGridColumnHeaderStyle}" 
        CellStyle="{StaticResource CenterAlignedDataGridCellStyle}" AutoGenerateColumns="True" Grid.Row="0" Grid.Column="1" Grid.RowSpan="3" 
        HeadersVisibility="Column" HorizontalGridLinesBrush="LightGray" VerticalGridLinesBrush="LightGray" CanUserAddRows="False" 
        CanUserResizeColumns="True" CanUserDeleteRows="False" CanUserSortColumns="False" CanUserReorderColumns="False" CanUserResizeRows="False" 
        HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Margin="10" SelectedItem="{Binding Path=SelectedUser, Mode=TwoWay}" /> 

RelatedViewModel:

ändern Methode:

private void ModifyGrid() 
{ 
    bool isModified = false; 
    for (int i = 0; i < DataGridSource.Rows.Count; i++) 
    { 
     if (DataGridSource.Rows[i].ItemArray[0].Equals(EditorUserName)) 
     { 
      DataGridSource.Rows[i].ItemArray[1] = "No"; 
      DataGridSource.Rows[i].ItemArray[2] = "Changing"; 
      isModified = true; 
      Console.Write("DataGrid Modified"); 
     } 
    } 
} 
+0

Können Sie das Viewmodel anzeigen? –

+1

Was ist 'DataGridSource'? Implementiert es 'INotifyPropertyChanged'? Die Quelle benötigt diese Implementierung, damit das Grid die Änderungen abhören kann. Sie sollten eine Quelle wie "ObservableCollection" mit Elementen auswählen, die auch "INotifyPropertyChanged" implementieren. –

+0

Ja viewModel erbt von INotifyPropertyChanged und implementiert die Methode override. Mein Problem ist nicht mit der Benachrichtigung. Die Sache ist die Quelle ändert sich nicht. Deshalb wird es nicht benachrichtigt. Ich habe auf debug überprüft und sehe, dass meine ItemArray Quelle nicht geändert wird, selbst wenn ich sie setze. –

Antwort

-1

ich eine Lösung für meine Frage gefunden. Ich habe DataGridSource (DataTable-Typ) an DataGrid gebunden. Ich habe meine binded-Eigenschaft in model-Klasse wie like (Source.cs) geändert und binde diese Eigenschaft, die inhertis von INotifyPropertyChanged ist. Dann wird es problemlos auf dem ViewModel ohne Probleme geändert. Danke an "Clemens". Seine Kommentare führten mich.