Cześć,
DataGrid jest zdefiniowany w ten sposób:
<DataGrid Grid.Row="2" Grid.Column="0" Margin="5" Grid.ColumnSpan="3" Name="dgrNumericalParameters" ItemsSource="{Binding}">
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid AutoGenerateColumns="True" Name="innerGrid" ItemsSource="{Binding}" Loaded="innerGrid_Loaded"/>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
zaś elementy wiążę ze sobą w ten sposób:
dgrNumericalParameters.DataContext = MainWindow.allEAsSettingsList.Find(item2 => item2.EAName == MainWindow.currentEAsSettingsName).EAParameters;
Problem się pojawia, gdy chcę dodać kolejny wiersz (edycja istniejących wartości w zewnętrznym i wewnętrznym DataGrid działa). Zaimplementowałem dodawanie kolejnego wiersza (i obiekt rzeczywiście zawiera nowy wiersz). Jednak wcale się on nie pojawia na DataGrid. (Również gdy kliknę inny istniejący wiersz w DataGrid dostaję wyjątek, że zawartość się zmieniła).
W związku z tym potrzebuję odświeżyć dgrNumericalParameters.DataContext.
Taki kod:
dgrNumericalParameters.DataContext.Refresh();
powoduje błąd:
Error 2 'object' does not contain a definition for 'Refresh' and no extension method 'Refresh' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?) H:\Projekty\temporary\MT4AnalyzeV2WPF\MT4AnalyzeV2WPF\TestScenario.xaml.cs 87 41 MT4Analyzer
Dodanie referencji do System.Data.Entity pozwala mi, co prawda, dostać się do System.Data.Objects, ale dalej taki kod nie działa z tego samego powodu, co powyżej:
dgrNumericalParameters.DataContext.Refresh(System.Data.Objects.RefreshMode.ClientWins, MainWindow.allEAsSettingsList.Find(item2 => item2.EAName == MainWindow.currentEAsSettingsName).EAParameters);
Znalazłem również informację, że upewnienie się, że lista w DataGrid jest typu ObservableCollection, może pomóc. Nie bardzo jednak wiem, czy to rzeczywiście w tym kierunku mam iść.
W jaki sposób mogę odświeżyć zawartość DataGrid.DataContext?
Pozdrawiam!