none
WPF DataGrid, der an Entity Framework gebunden ist, aktualisiert sich nach Änderung der Source nicht RRS feed

  • Frage

  • Ich arbeite an einer WPF-Applikation in der ich einen DataGrid an ein Entity Framework gebunden habe.

    So ist mein DataGrid definiert:

                    <DataGrid x:Name="grd_formula_arguments" Grid.Row="1" Grid.Column="2" Style="{StaticResource commonControlStyle}" IsReadOnly="True"
                               ItemsSource="{Binding FormulaArgumentsAndFields, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
                               AutoGenerateColumns="False" EnableRowVirtualization="True"
                               CanUserAddRows="False">
                         <DataGrid.Columns>
                             <DataGridTextColumn x:Name="col_attribute_name" Binding="{Binding attribute_name}" Header="Argument"/>
                             <DataGridTextColumn x:Name="col_assigned_field_name" Binding="{Binding assigned_field_name}" Header="Feld"/>
                         </DataGrid.Columns>
                    </DataGrid>
    
    

    Die ItemsSource ist an ein Property aus dem ViewModel gebunden, das eine List vom Typ der Entität formula_field_attributes ist.
    Diese Entität beinhaltet die Spalten "attribute_name" und "assigned_field_name".
    Dies ist das ViewModel-Property an das ich den DataGrid binde:

        public List<formula_field_attributes> FormulaArgumentsAndFields
         {
             get { return formulaArgumentsAndFields; }
             set
             {
                 formulaArgumentsAndFields = value;
                 RaisePropertyChanged("FormulaArgumentsAndFields");
             }
         }
    
    

    Zu Beginn ist in der List nur attribute_name gefüllt und assigned_field_name enthält Blank.
    Dann möchte ich zu einem Eintrag meiner Liste dem assigned_fieldname  aus einer anderen Liste mit Feldnamen einen Namen zuweisen.

                var argumentname = ((formula_field_attributes)grd_formula_arguments.SelectedItem).attribute_name;
                foreach (var item in changeTextProperties.FormulaArgumentsAndFields)
                {
                    if (item.attribute_name == argumentname)
                    {
                        item.assigned_field_name = fieldName;
                    }
                }
                changeTextProperties.RaisePropertyChanged("FormulaArgumentsAndFields");
    
    

    Wenn ich einen Blick in das ViewModel-Property FormulaArgumentsAndFields werfe, sieht alles gut aus.
    Die Zuweisung hat funktioniert.
    Leider tut sich der DataGrid nicht aktualisieren.
    Früher benutzte ich anstelle von Entity Framework eine DataTable als ItemsSource und damit gab es keine Probleme.
    Habe ich bei der Umstellung auf Entity Framework etwas vergessen oder falsch gemacht?

    Vielen Dank im voraus!
    Patrick


    Donnerstag, 10. November 2016 07:59

Antworten