1

ユーザーが行を追加するデータグリッドがあります。列 (Text 列 (Textbox と cell eidt template を含むテンプレート列)) と、combobx 列があります。

これらの検証を行いたい

  1. テキスト列は重複した値を許可してはならず、検証エラーを表示する必要があります。

したがって、ユーザーが入力するとしましょう

A、コンボボックス アイテム 1 B、コンボボックス アイテム 1 C、コンボボックス アイテム 2 B、コンボボックス アイテム 3 E、コンボボックス アイテム 4

A、コンボボックス アイテム 5 -- 検証エラーが表示されるはずです

  1. データ全体が一意である必要があります:

したがって、ユーザーが入力するとしましょう

A、コンボボックス アイテム 1 B、コンボボックス アイテム 1 C、コンボボックス アイテム 1 A、コンボボックス アイテム 2 C、コンボボックス アイテム 2

A, Combobox Item 2 -- 検証エラーが表示されるはずです

validationRule を見ましたが、それは単一行のセル値の検証用です。既存/以前に入力されたデータで検証されるものは見つかりませんでした。

ところで、私は開発にMVVMを使用しています。

助言がありますか ?

  • ギリヤ
4

3 に答える 3

1

個々のセルの検証であるため、最初の型の検証では、IDataErrorInfoを使用して行いました

2 番目の部分では datagRid.RowValidationRule を使用しますが、現在の行を含むデータグリッドのコレクションが必要だったので、コレクションを何らかの方法で validationrule に渡す必要があります。だから私はこれを以下のように使います:

  1. パラメータを検証ルールに渡す場合

注 : 上記の例では、バインドではなく静的リソースを渡します。しかし、それはよく説明されたブログです。

  1. バインディング コレクションを渡すために、このブログで言及されているパターンを使用しました

これが同様の問題を探している人に役立つことを願っています。

  • ギリヤ
于 2012-04-27T21:53:19.110 に答える
0

datatableにはこれが組み込まれています:)制約を設定し、検証エラーを受け取ることができます。

于 2012-04-26T05:20:33.750 に答える
0

MVVM を使用すると、行の ViewModel でIDataErrorInfo インターフェイスを使用して、属性ベースの検証を使用することができます。

カスタム検証の場合、パーソナライズされた検証方法でCustomValidationAttributeを使用できます。

于 2012-04-26T01:30:34.653 に答える