2010-06-03 62 views
1

好吧,這應該是一件非常簡單的事情,我要麼錯過了某些東西,要麼就錯了。將Silverlight DataForm.DataField標記爲無效?

事實:

  1. Silverlight 4中,使用工具包和使用的數據形/數據域,但不使用驗證摘要。

  2. 使用模板化的數據形與常規領域,如用戶名,姓名等,加密碼和確認密碼,簡單的新建/編輯用戶表單。

  3. 我想驗證,這樣,如果他們正在編輯的現有用戶,並且密碼字段爲空,讓它去。否則,請確保密碼相同。 (這在我的模型中已經使用了一個級別的自定義驗證器。)

  4. 如果驗證在#3中失敗,則通過在密碼字段中放置常見線索來提醒用戶。 (紅色邊框,如果您點擊該字段留言)

我現在可以通過#3完成所有工作。但是,如果發生錯誤,那麼錯誤將顯示爲表單錯誤,而不是字段錯誤(這是合理的,因爲驗證在類上,而不是屬性)。我無法找到標記我的領域以顯示錯誤的方法。由於我沒有使用驗證摘要(出於設計原因),因此錯誤從未顯示給用戶。

有沒有其他人這樣做,或者他們可以給我用不使用驗證摘要密碼字段的數據形式的一個例子,所以我可以看到他們是如何解決的呢?

我看到的兩個當前選項是自己手動標記數據字段。或者,我將構建自己的顯示完整表單錯誤的方法,不會像驗證摘要那樣重複出現錯誤。 (IE,我需要一個驗證摘要只顯示形式的錯誤 - 沒有現場錯誤。)

感謝

+0

我正面臨類似的問題。不過,我正在使用「用戶註冊表單」,我試圖讓管理員可以選擇更改用戶的密碼,密碼問題和答案。邏輯應該是,如果字段(這四個字段中的任何一個)填寫完畢,所有這些字段都必須存在。您是否願意發佈顯示如何從驗證事件中刪除字段的代碼?這將非常有幫助! – bleepzter 2011-07-01 15:08:04

回答

3

好吧,我解決了這個問題。這裏有一些提示:

  1. 在我的XAML的代碼的.cs,我是通過調用TryValidate我的對象上驗證我的對象。如果不使用內置的DataForm命令按鈕,這不是一個好主意。如果使用自己的自定義按鈕,那麼一定要調用DataForm.ValidateItem()方法以確保所有錯誤都能正確輸出到ValidationSummary。 (在我的情況下,由於我沒有驗證表單,所以沒有任何驗證摘要。)

  2. 您可以告訴ValidationSummary僅顯示對象級錯誤。 (屬性錯誤仍然顯示,但只在現場。)要這樣分配像這樣:

    myDataform.ValidationSummary.Filter = ValidationSummaryFilters.ObjectErrors;

請參閱ValidationSummaryFilters以獲取更多信息。

這對我有效。我的對象驗證將顯示在驗證摘要中,僅在屬性上顯示屬性錯誤。現在我只需要按照我希望使其更適合我的設計的方式來設計驗證摘要。