有沒有人有WPF Datagrid交叉行驗證的任何示例。單元級別驗證和Rowlevel驗證不符合我的要求。我儘可能地堅持使用MVVM。我的最後一個選擇是使用後面的代碼。所以基本上我需要在網格中發生某些事情時訪問Itemssource。任何幫助深表感謝。 感謝-ReyWPF Datagrid跨行驗證
0
A
回答
1
關於後面的代碼在每個表中添加一個部分類。
酒店[HasNoError]是返回true,如果沒有錯誤
酒店[錯誤]是字符串
if(tablename.HasNoError)
{
// do your logic
}
else
{
// display tablename.Error
}
返回錯誤在XAML端使用綁定
<DataGridTextColumn Binding="{Binding Path=ActualFieldName1, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged }" Header=" ActualFieldName1" />
這是使用IDataErrorInfo的類樣品 -
public partial class tablename : IDataErrorInfo
{
private Dictionary<string, string> errorCollection = new Dictionary<string, string>();
public bool HasNoError
{
get
{
return string.IsNullOrWhiteSpace(Error);
}
}
public string Error
{
get
{
if (errorCollection.Count == 0)
return null;
StringBuilder errorList = new StringBuilder();
var errorMessages = errorCollection.Values.GetEnumerator();
while (errorMessages.MoveNext())
errorList.AppendLine(errorMessages.Current);
return errorList.ToString();
}
}
public string this[string fieldName]
{
get
{
string result = null;
switch (fieldName)
{
case "ActualFieldName1":
if (string.IsNullOrWhiteSpace(this.ActualFieldName1))
{
result = "ActualFieldName1 is required.";
};
if (Other_Condition)
{
result = "Other Result";
};
break;
case "ActualFieldName2":
if (string.IsNullOrWhiteSpace(this.ActualFieldName2))
{
result = "ActualFieldName2 is required.";
};
if (Other_Condition)
{
result = "Other Result";
};
break;
// and so
}
if (result != null && !errorCollection.ContainsKey(fieldName))
errorCollection.Add(fieldName, result);
if (result == null && errorCollection.ContainsKey(fieldName))
errorCollection.Remove(fieldName);
return result;
}
}
}
爲了使它很好添加一些風格爲目標的錯誤模板看到的例子
<Style TargetType="{x:Type TextBox}">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<Border BorderBrush="Red" BorderThickness="1">
<Grid>
<AdornedElementPlaceholder x:Name="MyAdorner"/>
<Image Width="{Binding AdornedElement.ActualHeight, ElementName=MyAdorner}" Margin="0" ToolTip="{Binding AdornedElement.(Validation.Errors)[0].ErrorContent, ElementName=MyAdorner}" HorizontalAlignment="Right" VerticalAlignment="Center" Source="/Path/Exclamation.png" />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
+0
我相信上面的工作單元級別驗證。爲我的多行驗證,我發現這篇文章,http://stackoverflow.com/questions/1729414/wpf-datagrid-how-to-validate-multiple-rows-and-mark-all-invalid-ones,我也結合你的單元級別驗證以顯示無效的單元格。對不起,我不能將你的答覆作爲答案,因爲它不能給我的問題提供正確的解決方案。 – Manohar 2010-12-21 04:37:09
相關問題
- 1. WPF Datagrid行驗證
- 2. WPF Datagrid的新行驗證
- 3. WPF DataGrid |隱藏行驗證列
- 4. WPF DataGrid行驗證錯誤計數
- 5. WPF DataGrid - 驗證建議
- 6. Force DataGrid列驗證(WPF)
- 7. WPF - 行驗證?
- 8. SQLite Datagrid驗證
- 9. WPF的DataGrid驗證問題 - MVVM
- 10. 當綁定到DataView時WPF DataGrid驗證
- 11. WPF DataGrid驗證錯誤不清除
- 12. WPF DataGrid驗證/綁定模式錯誤
- 13. WPF DataGrid驗證錯誤未被捕獲
- 14. DataGrid異步驗證
- 15. WPF Datagrid - 如何驗證多行並標記所有無效行?
- 16. WPF中的跨屬性驗證
- 17. Dojo DataGrid驗證
- 18. wpf Datagrid:哪個驗證方法最適合DataGrid
- 19. DataGrid行驗證基於其他行
- 20. wpf datagrid總行
- 21. WPF Datagrid行號
- 22. WPF DataGrid行高
- 23. WPF DataGrid空行
- 24. 驗證Silverlight DataGrid中的新行
- 25. WPF DataGrid - 如何使用DataGridTemplateColumn對單元格和行進行驗證
- 26. WPF DataGrid行着色
- 27. WPF DataGrid行問題
- 28. WPF DataGrid頁腳行
- 29. 刪除Datagrid行(WPF)
- 30. DataGrid禁用行wpf
您使用實體框架? – 2010-12-10 22:04:44
是的,它的一個客戶端服務器應用程序... – Manohar 2010-12-10 22:16:15