Cześć,
Mam problem z aktualizacją datagrida (WPF) we wzorcu MVVM, używam ObservableCollection i działa wypełnienie i oczywiście dane widać natomiast jest problem z wyświetleniem nowych wartości. Macie może jakieś pomysły? Przeszukałem overstackflow i nie znalazłem satysfakcjonującej odpowiedzi tym bardziej, że czyszczenie ObservableCollection powoduje zmianę datagrida na pusty, a już przypisanie MainDataGrid = newQuery2
nie...
View xaml:
<DataGrid Grid.Row="1" IsReadOnly="True" MinHeight="329" MinWidth="872" Grid.RowSpan="1" AutoGenerateColumns="False" CanUserResizeColumns="True" AlternatingRowBackground="Gainsboro" AlternationCount="2" ItemsSource="{Binding MainDataGrid, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedContractor}" >
<DataGrid.Columns>
<DataGridTextColumn Header="Kontrahent" MinWidth="200" Binding="{Binding ContractorName, Mode=TwoWay}"/>
<DataGridTextColumn Header="Numer tel." MinWidth="100" Binding="{Binding NumberPhone, Mode=TwoWay}"/>
<DataGridTextColumn Header="Email" MinWidth="150" Binding="{Binding Email, Mode=TwoWay}"/>
<DataGridTextColumn Header="Osoba do kontaktu" Width="*" Binding="{Binding MainPerson, Mode=TwoWay}"/>
</DataGrid.Columns>
<DataGrid.InputBindings>
<MouseBinding Gesture="LeftDoubleClick" Command="{Binding OpenSelectedContractorCmd}" />
</DataGrid.InputBindings>
</DataGrid>
ViewModel (wlaściwości) C#:
ObservableCollection<DataMainContractor> _MainDataGrid;
public ObservableCollection<DataMainContractor> MainDataGrid
{
get
{
return _MainDataGrid;
}
set
{
_MainDataGrid = value;
OnPropertyChanged("_MainDataGrid");
}
}
Wpisanie do DataGrida (działa):
private void ShowData()
{
var query = gmdc.getContractorName();
ObservableCollection<DataMainContractor> newQuery = new ObservableCollection<DataMainContractor>(query);
MainDataGrid = newQuery;
}
ViewModel Aktualizacja/podanie nowych danych do datagrida (niedziała):
private void Search()
{
var query = gmdc.getMainDataSearchPhone(ContractorNumberPhone);
ObservableCollection<DataMainContractor> newQuery2 = new ObservableCollection<DataMainContractor>(query);
MessageBox.Show(ContractorNumberPhone);
//MainDataGrid.Clear(); //.Clear działa bo czyści ObservableCollection i jest pusty datagrid
MainDataGrid = newQuery2; // to już nie działa
}
Z góry dziękuję za odpowiedzi