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
Nel progetto client aggiungere un file di classe.
Dichiarare una classe parziale con lo stesso nome e lo stesso spazio dei nomi della classe proxy dell'entità che si desidera modificare.
Aggiungere una proprietà che crea un nuovo valore basato su uno o più valori della classe proxy dell'entità.
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>