다음을 통해 공유


방법: 클라이언트에서 계산된 속성 추가

엔터티 클래스의 속성에서 계산되는 WCF RIA Services 클라이언트 프로젝트에서 속성을 추가할 수 있습니다. 부분 메서드(Partial Method)는 UI 요소에 값이 변경되었음을 알리는 이벤트를 발생시키는 데 사용됩니다. 계산된 속성을 추가하면 클라이언트 프로젝트에는 속성만 있습니다. 이 항목에서는 이러한 계산된 속성을 추가하는 방법에 대해 설명합니다.

생성된 코드를 사용자 지정하는 방법에 대한 자세한 내용은 생성된 코드 사용자 지정을 참조하십시오. 클라이언트 코드를 생성하는 방법에 대한 자세한 내용은 클라이언트 코드 생성를 참조하십시오.

계산된 속성을 추가하려면

  1. 클라이언트 프로젝트에서 클래스 파일을 추가합니다.

  2. 수정하려는 엔터티 프록시 클래스와 같은 이름 및 네임스페이스로 partial 클래스를 선언합니다.

  3. 엔터티 프록시 클래스의 값을 기준으로 새 값을 만드는 속성을 추가합니다.

  4. 새 값을 계산하는 데 사용되는 각 속성에 대해 On[CustomProperty]Changed 부분 메서드(Partial Method)를 구현하고 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>