INotifyPropertyChanged devi implementarlo nella classe contenuta nella ObservableColelction che ti restituisce il servizio non sulla collection stessa, altrimenti il datagrid non si accorge dei cambiamenti.
La classe CollectionMissioni che hai creato non serve.
Prendi come buona la classe EntityBase di esempio che ti ho scritto prima
La tua classe base deve essere pressappoco cosi:
[DataContract]
public class Vista_Missioni: EntityBase
{
public override event PropertyChangedEventHandler PropertyChanged;
private int idmissione;
private string nomemissione;
[DataMember]
public Int32 IDMissione
{
get{return idmissione;}
set{
if(value!=idmissione)
{
idmissione=value;
PropertyChanged(this, new PropertyChangedEventArgs("IDMissione"));
}
}
[DataMember]
public string NomeMissione
{
get{return nomemissione;}
set{
if(value!=nomemissione)
{
nomemissione=value;
PropertyChanged(this, new PropertyChangedEventArgs("NomeMissione"));
}
}
Il servizio poi ti restituira una ObservableCollection<Vista_Missioni> allora potrai fare come ti ho suggerito nella prima risposta.
Private _missioni As System.Collections.ObjectModel.ObservableCollection(Of Vista_Missioni)
Private Sub btnRicerca_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
myDispatcherTimer.Interval = New TimeSpan(0, 0, 0, 0, 500) ' 100 Milliseconds
AddHandler myDispatcherTimer.Tick, AddressOf LoadMissioni
myDispatcherTimer.Start()
End Sub
Private Sub client_getMissioniComplited(ByVal sender As Object, ByVal e As sr_001.getMissioniCompletedEventArgs)
if _missioni=nothing then
'vuol dire che è la prima chiamata al servizio
'ed il datagrid deve essere popolato per la prima volta
_missioni=e.result
'questa è l'unica volta che viene assegnato il valore
'alla proprieta ItemsSource
dgMissioni.ItemsSource = _missioni
else
'qui ci sono le chiamate successive al servizio
'il metodo ComparaMissioni deve fare il lavoro di
'comparazione delle due collection ed aggiornamento
'di _missioni allo stato di e.result (insert,update,delete)
ComparaMissioni(_missioni,e.result)
end if
End Sub
Se la classe Vista_Missioni è una classe generata automaticamente da LinqToSql allora implementa gia INotifyPropertyChanged , in questo caso aggiusta solo il codice di silverlight.
Edika