131 messaggi dal 12 febbraio 2001
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

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.