次の方法で共有


方法: 計算されたプロパティをクライアントに追加する

エンティティ クラスのプロパティから計算されたプロパティを WCF RIA サービス クライアント プロジェクトに追加できます。部分メソッドは、値が変更されたことを UI 要素に通知するイベントを発生させるために使用されます。計算されたプロパティを追加すると、そのプロパティはクライアント プロジェクトだけに存在します。ここでは、このような計算されたプロパティを追加する方法について説明します。

生成されたコードのカスタマイズの詳細については、「生成されたコードのカスタマイズ」を参照してください。クライアント コードの生成の詳細については、「クライアント コード生成」を参照してください。

計算されたプロパティを追加するには

  1. クライアント プロジェクトで、クラス ファイルを追加します。

  2. 変更するエンティティ プロキシ クラスと同じ名前および名前空間で部分クラスを宣言します。

  3. エンティティ プロキシ クラスの 1 つ以上の値に基づいて新しい値を作成するプロパティを追加します。

  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>