這是一個WPF whodunnit!預計當它沒有出現我的驗證寺廟
Validation ErrorTemplate沒有顯示數據錯誤
的問題
基本上,我使用我的視圖模型IDataErrorInfo的提供有關數據輸入錯誤的反饋。我可以看到這被調用並按預期工作,但綁定控件的驗證錯誤模板永遠不會被WPF顯示!
我已經嘗試使用內置的默認文本框紅色邊框錯誤模板,樣式錯誤模板和硬編碼模板。這些都不會在數據錯誤情況下顯示。
我的繼承人XAML綁定代碼:
<TextBox x:Name="txtCaseNumber"
Text="{Binding Path=CaseNumber, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"/>
Wierdly,誤差會進入Validation.Errors集合。以下代碼導致我的IDataErrorInfo錯誤消息顯示在綁定控件旁邊。這導致我認爲問題在xaml方面,而不是視圖模型方面。
<ContentPresenter
Content="{Binding ElementName=txtCaseNumber, Path=(Validation.Errors).CurrentItem}" />
此外, System.Windows.Controls.Validation.GetHasError(txtCaseNumber)
返回true。
我在winforms中託管WPF,如果這有所作爲。我無法在我的代碼或樣式中找到任何對Validation或ErrorTemplate的引用,所以我非常確定這不是一個樣式化的自己的目標。
先生,我向你致敬!我在VS擴展中有一個UserControl> Expander> Textbox。但它不會顯示IDataErrorInfo錯誤。做了一個示例WPF應用程序來承載UC - 問題持續存在(VS Extn排除)。製作了另一臺虛擬機 - 工作排除了虛擬機。然後我打了你的帖子 - 在窗口和UC中添加了幾個Loaded事件處理程序。果然,UC返回了一個空AdornerLayer。用AdornerDecorator包裝擴展器的內容,它工作!我放慢了2天的速度..活着n學習我猜。再一次感謝持久和時間爲後人記錄它! – Gishu 2010-10-14 18:03:12
沒有probs!我也失去了2天:( – 2010-10-14 18:48:10
這只是解決了我沒有提供AdornerDecorator的Metro風格窗口的問題。謝謝! – mortware 2012-08-06 15:51:00