Share via


HOW TO:在用戶端上加上計算屬性

您可以在 WCF RIA Services 用戶端專案中加入可從實體類別的屬性中計算的屬性。部分方法是用來引發通知 UI 項目值已變更的事件。當您加入計算屬性時,這種屬性只會存在於用戶端專案中。本主題將說明如何加入這種計算屬性。

如需自訂產生的程式碼的詳細資訊,請參閱自訂產生的程式碼。如需產生用戶端程式碼的詳細資訊,請參閱產生用戶端程式碼

若要加入計算屬性

  1. 在用戶端專案中加入類別檔。

  2. 以與您要修改之實體 Proxy 類別相同的名稱和命名空間來宣告部分類別。

  3. 加入一個屬性,可根據實體 Proxy 類別中的一個或多個值建立新值。

  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>