Procédure : Ajouter des propriétés calculées sur le client
Vous pouvez ajouter dans le projet client Services RIA WCF des propriétés calculées à partir des propriétés de la classe d'entité. Des méthodes partielles permettent de déclencher l'événement qui informe les éléments d'interface utilisateur que la valeur a été modifiée. Lorsque vous ajoutez des propriétés calculées, celles-ci existent uniquement dans le projet client. Cette rubrique décrit comment ajouter ces propriétés calculées.
Pour plus d'informations sur la personnalisation du code généré, consultez Personnalisation du code généré. Pour plus d'informations sur la génération du code client, consultez Génération de code client.
Pour ajouter une propriété calculée
Dans le projet client, ajoutez un fichier de classe.
Déclarez une classe partielle avec les mêmes nom et espace de noms que la classe proxy d'entité que vous voulez modifier.
Ajoutez une propriété qui crée une valeur basée sur une ou plusieurs valeurs dans la classe proxy d'entité.
Implémentez la méthode partielle
On[
CustomProperty]Changed
pour chaque propriété utilisée dans le calcul de la nouvelle valeur et appelez la méthode RaisePropertyChanged pour notifier à l'infrastructure que la propriété calculée a été modifiée.L'exemple suivant indique comment calculer le total du temps disponible hors du travail pour un employé en fonction de ses heures de congé et de ses congés de maladie. Toute modification apportée aux heures de congé ou aux heures de congé de maladie produira la modification du total des heures d'inactivité.
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"); } } }
Vous pouvez créer une liaison de données avec cette propriété calculée à l'aide du code suivant.
<dataForm:DataField Label="Total Off Hours"> <TextBox Text="{Binding TotalOffHours, Mode=OneWay}" /> </dataForm:DataField>