如何:在客户端上添加计算的属性

您可以在 WCF RIA Services 客户端项目中添加根据实体类中的属性计算出的属性。分部方法用于引发通知 UI 元素值已更改的事件。在您添加计算的属性时,该属性仅在客户端项目中存在。本主题说明如何添加此类计算的属性。

有关自定义生成的代码的更多信息,请参见自定义生成的代码。有关生成客户端代码的信息,请参见客户端代码生成

添加计算的属性

  1. 在客户端项目中,添加一个类文件。

  2. 使用与您要修改的实体代理类相同的名称和命名空间声明一个分部类。

  3. 添加一个属性,该属性基于实体代理类中的一个或多个值创建一个新值。

  4. 为计算这个新值是使用的每个属性都实现 On[CustomProperty]Changed 分部方法,并且调用 RaisePropertyChanged 方法以便通知框架计算的属性已更改。

    下面的示例演示如何基于休假和病假小时数计算某个员工的总的非工作可用时间。对休假小时数或病假小时数的更改将在总的非工作小时数中体现出来。

    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"); 
        } 
      }
    }
    

    您可以使用以下代码数据绑定到此计算的属性。

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