Gewusst wie: Hinzufügen von berechneten Eigenschaften auf dem Client
Sie können im WCF RIA Services-Clientprojekt Eigenschaften hinzufügen, die aus Eigenschaften in der Entitätsklasse berechnet werden. Das Ereignis, durch das Benutzeroberflächenelemente über die Änderung des Werts benachrichtigt werden, wird mithilfe von partiellen Methoden ausgelöst. Wenn Sie berechnete Eigenschaften hinzufügen, ist die Eigenschaft nur im Clientprojekt vorhanden. In diesem Thema wird beschrieben, wie solche berechneten Eigenschaften hinzugefügt werden.
Weitere Informationen zum Anpassen von generiertem Code finden Sie unter Anpassen des generierten Codes. Informationen zum Generieren von Clientcode finden Sie unter Clientcodegenerierung.
So fügen Sie eine berechnete Eigenschaft hinzu
Fügen Sie im Clientprojekt eine Klassendatei hinzu.
Deklarieren Sie eine partielle Klasse mit dem gleichen Namen und Namespace wie die zu ändernde Entitätsproxyklasse.
Fügen Sie eine Eigenschaft hinzu, durch die basierend auf einem oder mehreren Werten in der Entitätsproxyklasse ein neuer Wert erstellt wird.
Implementieren Sie die partielle
On[
CustomProperty]Changed
-Methode für jede zum Berechnen des neuen Werts verwendete Eigenschaft, und rufen Sie die RaisePropertyChanged-Methode auf, um das Framework über die Änderung der berechneten Eigenschaft zu benachrichtigen.Das folgende Beispiel zeigt, wie die gesamte verfügbare Abwesenheitszeit für einen Mitarbeiter auf Grundlage der Urlaubsstunden und Krankentagen berechnet wird. Eine Änderung der Urlaubs- oder Krankheitsstunden führt zu einer Änderung der Gesamtanzahl von Abwesenheitsstunden.
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"); } } }
Mit dem folgenden Code können Daten an diese berechnete Eigenschaft gebunden werden.
<dataForm:DataField Label="Total Off Hours"> <TextBox Text="{Binding TotalOffHours, Mode=OneWay}" /> </dataForm:DataField>