2010-05-09 42 views
4

我已經創建了一個WCF RIA服務,我希望將其用於WPF應用程序。我已經在實體元數據上添加了幾個System.ComponentModel.DataAnnotations驗證規則,當我從客戶端調用.SubmitChanges(changeSet)時,所有這些在服務器上工作良好。我還想在客戶端對我的實體進行驗證,然後再對服務器進行修改,但我不知道如何去做。任何在這方面的幫助將不勝感激!謝謝....如何使用WCF RIA服務在WPF中進行客戶端驗證

+0

可能的重複[如何使用WCF RIA服務與WPF應用程序?](http://stackoverflow.com/questions/2551258/how-to-use-wcf-ria-services-with-wpf-application) – Shimmy 2011-11-20 03:47:27

回答

2

據我所知,WPF沒有WCF RIA服務(雖然我很高興被證明是錯誤的,因爲我正在等待...),所以你必須自己做客戶端工作。

使用VisualTreeHelper檢查窗體中的每個控件,如果控件是面板,則遞歸地使用VisualTreeHelper。對於每個控件,都有一個潛在綁定屬性的列表(我猜在這種情況下只有一個)。例如,一個TextBox可能會綁定其TextBoxProperty,一個CheckBox將會綁定其IsCheckedProperty。使用BindingOperation.GetBinding來獲得一個Binding實例,該實例爲您提供Source和Path屬性。現在在源代碼上使用反射來查看是否存在與其關聯的數據註釋。如果有,請檢查它。

是的,這是很多代碼。

+0

感謝你及時的答覆!不幸的是,我的應用程序不使用綁定。我手工創建一個或多個ChangeSetEntry,然後通過調用SaveChanges(changeSet)跨網絡發送它們。我想在通過電線之前驗證數據。不幸的是,就像你說的,看起來我是S.O.L.無論如何,再次感謝您的幫助...... – 2010-05-09 23:16:34

+0

我使用綁定作爲獲取源對象及其成員的方式。從ChangeSetEntry中,您可以訪問修改的實體及其原始值。比較它們會給你修改的成員,因此,通過反思,會給你數據註釋來檢查。 – Timores 2010-05-10 08:21:35

+0

請投票 請投票[這裏](http://dotnet.uservoice.com/forums/57026-wcf-ria-services/suggestions/746156-support-for-wpf)和[here](https:// connect .microsoft.com/VisualStudio中/反饋/信息/ 621763 /支持的WCF的RIA服務換WPF)。 – Shimmy 2012-04-29 06:27:03

相關問題