我有一個與'int'類型屬性綁定的列的DataGrid。我正在使用IDataErrorInfo進行驗證。我的驗證規則工作正常,只要我更改單元格的值,它們就會被解僱。假設用戶輸入的值小於0,我在工具提示中顯示相應的錯誤。用戶清除文本框的值時出現問題。在這種情況下,IDataErrorInfo從不會觸發,因此我無法通過提示說該值不能爲空來顯示用戶驗證錯誤。 DataGrid圍繞文本框製作紅色邊框,這很好,還有一個'!'在行標題處簽名,但在工具提示中沒有驗證錯誤,因爲IDataErrorInfo從未被觸發。如果文本框的值被清除,我能做些什麼來觸發IDataError信息?IDataErrorInfo不在int列的情況下觸發DataGrid
編輯:
XAML
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding DisplayOrder, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True, ValidatesOnDataErrors=True}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding DisplayOrder, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
DisplayOrder物業
public int DisplayOrder
{
get
{
return m_DisplayOrder;
}
set
{
if(value != m_DisplayOrder)
{
m_DisplayOrder = value;
OnPropertyChanged("DisplayOrder");
}
}
}
即使我加上「ValidateOnExceptions = TRUE」 IDataErrorInfo的不開除,我不看到任何提示消息,無論是 – 2011-04-08 09:13:44
激活綁定錯誤以進行調試,並查看輸出窗口以查看綁定錯誤。那裏你應該找到更多的信息。我真的認爲這個問題是你的int類型。當你清除你的文本框wpf嘗試將null設置爲int並且這會導致異常(並且你的setter不會被調用!)。 ValidateOnExceptions = True應該也會提供這些信息,但也許你必須檢查你的datagridcell的驗證模板。 – blindmeis 2011-04-08 09:22:37
將您的類型更改爲可爲空,以查看您的二傳手是否被調用。 –
blindmeis
2011-04-08 09:23:45