Procedura: aggiungere proprietà calcolate nel client

È possibile aggiungere nel progetto client WCF RIA Services proprietà che vengono calcolate dalle proprietà nella classe di entità. I metodi parziali sono utilizzati per generare l'evento che notifica gli elementi dell'interfaccia utente il cui valore è stato modificato. Quando si aggiungono le proprietà calcolate, la proprietà esiste solo nel progetto client. In questo argomento viene descritto come aggiungere tali proprietà calcolate.

Per ulteriori informazioni sulla personalizzazione del codice generato, vedere Personalizzazione del codice generato. Per informazioni sulla generazione del codice client, vedere Generazione del codice client.

Per aggiungere una proprietà calcolata

  1. Nel progetto client aggiungere un file di classe.

  2. Dichiarare una classe parziale con lo stesso nome e lo stesso spazio dei nomi della classe proxy dell'entità che si desidera modificare.

  3. Aggiungere una proprietà che crea un nuovo valore basato su uno o più valori della classe proxy dell'entità.

  4. Implementare il metodo parziale On[CustomProperty]Changed per ogni proprietà utilizzata nel calcolo del nuovo valore e chiamare il metodo RaisePropertyChanged per notificare il framework modificato dalla proprietà calcolata.

    Nell'esempio seguente viene mostrato come calcolare il tempo totale disponibile per tempo libero di un dipendente sulla base delle ore di ferie e dell'assenza per malattia. Una modifica alle ore di ferie o alle ore di assenza per malattia produrrà una modifica al totale delle ore per il tempo libero.

    Imports System.ServiceModel.DomainServices.Client
    
    Namespace Web
      Partial Public Class Employee
        Inherits Entity
    
        ReadOnly Property TotalOffHours() As Integer
          Get
            Return Me.SickLeaveHours + Me.VacationHours
          End Get
        End Property
    
        Private Sub OnSickLeaveHoursChanged()
          Me.RaisePropertyChanged("TotalOffHours")
        End Sub
    
        Private Sub OnVacationHoursChanged()
          Me.RaisePropertyChanged("TotalOffHours")
        End Sub
      End Class
    End Namespace
    
    using System.ServiceModel.DomainServices.Client;
    
    namespace RIAServicesExample.Web
    {
      public partial class Employee : Entity
      { 
        public int TotalOffHours 
        { 
          get { return this.SickLeaveHours + this.VacationHours; } 
        } 
        partial void OnSickLeaveHoursChanged() 
        { 
          this.RaisePropertyChanged("TotalOffHours"); 
        } 
        partial void OnVacationHoursChanged() 
        { 
          this.RaisePropertyChanged("TotalOffHours"); 
        } 
      }
    }
    

    È possibile associare i dati a questa proprietà calcolata utilizzando il codice riportato di seguito.

    <dataForm:DataField Label="Total Off Hours"> 
      <TextBox Text="{Binding TotalOffHours, Mode=OneWay}" />
    </dataForm:DataField>