2011-07-30 48 views
1

我有一個簡單的視圖和viewmodel與後者實現IDdataErrorInfo和IValidationExceptionHandler。該視圖包含一個組合框,其ItemsSource綁定到SelectedValue綁定到屬性的集合 - 驗證數據錯誤和異常;更新屬性更新並通知源更新。wpf idataerrorinfo combobox

我正在使用數據註釋,屬性是「裝飾」與必需以及Range屬性,我會執行該視圖時,預計組合框顯示錯誤裝飾和我已提供的消息必需的屬性。但是,懸停在裝飾者上,我注意到消息是「價值」而不是「轉換」。

如果我發現沒有選擇任何值,我必須檢查屬性的getter中的選定值並返回ValidationResult與我的消息?我認爲只要使用Required屬性就可以做到這一點,但對於組合框似乎不起作用?

任何幫助非常感謝。

回答

2

如果組合框中沒有表示項目代表SelectedValue表示什麼類型的默認值,通常會發生這種情況。

假設您的綁定選定值屬性是字符串,應該有一個項目(在ItemsSource中),它表示string.empty的默認值。

,因此(可能)的誤差值「」不能轉換

讓我知道,如果這有助於。

+0

感謝您的回覆,非常感謝。ItemsSource綁定到一個列表,其中對象有兩個屬性,一個id(long)和一個文本(string)。該id是SelectedValuePath,DisplayMemberPath是文本。不知道我知道如何去做你的建議? – c95mbq

+0

是的,所以在SelectedValue綁定中有一個null或string.empty。讓我們嘗試一件事,讓你的ID「很長?」 (可爲空),並在您的列表中有一些對象具有像{Id = null,Text =「 - 請選擇 - 」}的數據。確保您只爲Id返回零或爲零的驗證錯誤。刪除任何其他防禦性代碼,以零掩蓋空位。請檢查並讓我知道... –

+0

謝謝。這聽起來像是會起作用,但當數據庫支持是不可空的字段時,顯然有一些工作要涉及。我希望能有一些比干擾項更少干擾的東西,如果你能想出一個辦法,那會很棒,但現在我會接受你的答案。謝謝 – c95mbq