HOW TO:在用戶端上加上計算屬性
您可以在 WCF RIA Services 用戶端專案中加入可從實體類別的屬性中計算的屬性。部分方法是用來引發通知 UI 項目值已變更的事件。當您加入計算屬性時,這種屬性只會存在於用戶端專案中。本主題將說明如何加入這種計算屬性。
如需自訂產生的程式碼的詳細資訊,請參閱自訂產生的程式碼。如需產生用戶端程式碼的詳細資訊,請參閱產生用戶端程式碼。
若要加入計算屬性
在用戶端專案中加入類別檔。
以與您要修改之實體 Proxy 類別相同的名稱和命名空間來宣告部分類別。
加入一個屬性,可根據實體 Proxy 類別中的一個或多個值建立新值。
為每個用來計算新值的屬性實作
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>