WPF Datagridのクロスローの検証には誰もいませんか?セルレベルの検証とRowlevel検証は私の要件を満たしていません。私は可能な限りMVVMに固執しようとしています。私の最後の選択肢は、コードを使用することです。だから、基本的に私はグリッド内で何かが起きたときにItemSourceにアクセスする必要があります。どんな助けでも大歓迎です。 ありがとう-ReyWPF Datagridクロスローのバリデーション
0
A
答えて
1
コードの後ろに、各テーブルに部分クラスを追加します。
プロパティ[エラー]使用XAML側の列
if(tablename.HasNoError)
{
// do your logic
}
else
{
// display tablename.Error
}
としてエラーを返しているエラーがない場合
プロパティ[HasNoError]がtrueを返している結合
<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
関連する問題
- 1. WPF Visual C#DataGridのDataGrid
- 2. DataGridのWPFイメージバインド
- 3. WPFのDataGridオートサイジング
- 4. DataGridのWPFフィールド
- 5. WPF DataGridのColspan
- 6. WPF DataGridのリゾートデータ
- 7. C#WPFのDataGrid
- 8. WPF Datagridドロップダウンボックス
- 9. WPF DataGridバインディング
- 10. WPF DataGrid SelectedItem
- 11. Datagrid Wpf C#
- 12. ダブルリスト - WPFツールキットDataGrid
- 13. プリロードWPF DataGrid
- 14. WPF DataGrid Dockパネルグループ
- 15. WPF DataGrid Expander.IsEnabledバインディング
- 16. WPF DataGrid Combobox Binding
- 17. は、DataGrid WPF C#
- 18. WPFデータグリッド - DataGrid内
- 19. WPF DataGrid set selectedItem
- 20. WPF datagrid auto filter
- 21. c#wpf Dynamic DataGrid
- 22. WPF Toolkit Datagrid - カスタムタブ
- 23. WPF ToolKit DataGridパフォーマンス
- 24. WPF Datagrid行フォアグラウンドカラーマルチトリガー
- 25. WPF Datagridスクロール
- 26. WPF Datagrid C#
- 27. WPF Datagrid Superheader
- 28. WPF DataGrid(MVVM)のScrollIntoView
- 29. DataGrid/ListBoxのWPFボタン
- 30. WPF DataGrid - グレーデッドカラースケールのカラーセル
を参照してくださいエラーテンプレートをターゲットに、いくつかのスタイルを追加作成するには、あなたは、Entity Frameworkのを使用していますか? –
はいとそのクライアントサーバーのアプリケーション... – Manohar