Agregar propiedades calculadas en el cliente
Puede agregar propiedades en el proyecto de cliente de WCF RIA Services que se calculan a partir de las propiedades de la clase de entidad. Los métodos parciales se utilizan para generar el evento que notifica a los elementos de la interfaz de usuario que el valor ha cambiado. Cuando se agregan propiedades calculadas, la propiedad solo existe en el proyecto de cliente. En este tema se describe cómo agregar dichas propiedades calculadas.
Para obtener más información sobre la personalización del código generado, vea Personalizar el código generado. Para obtener información sobre cómo generar código de cliente, vea Generación de código de cliente.
Para agregar una propiedad calculada
En el proyecto de cliente, agregue un archivo de clase.
Declare una clase parcial con los mismos nombre y espacio de nombres que la clase de proxy de entidad que desea modificar.
Agregue una propiedad que cree un nuevo valor basándose en uno o más valores de la clase de proxy de entidad.
Implemente el método parcial
On[
CustomProperty]Changed
para cada propiedad utilizada en el cálculo del nuevo valor y llame al método RaisePropertyChanged para notificar al marco que la propiedad calculada ha cambiado.En el ejemplo siguiente se muestra la forma de calcular el tiempo total disponible por ausencia en el trabajo de un empleado basándose en las horas de vacaciones y de baja por enfermedad. Un cambio en las horas de vacaciones o en las horas de baja por enfermedad generará un cambio en el total de horas no laborales.
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"); } } }
Puede realizar el enlace de datos a esta propiedad calculada con el código siguiente.
<dataForm:DataField Label="Total Off Hours"> <TextBox Text="{Binding TotalOffHours, Mode=OneWay}" /> </dataForm:DataField>