1

VS-2010 では、Datagrid列が を使用している場合、行のバインドされたビューモデルへの参照をValidationRules与える方法はありますか? ValidationRule特定の状況では、検証ロジックはビューモデルの現在の状態に依存します。

ValidationRulesusingにパラメーターを追加することについて読みましたDependencyObjects。ただし、例では、検証パラメーターをバインドすることのみを示していますStaticResources(最大値と最小値など)。は論理ツリーの一部ではないため、検証ルールのパラメーターを作成して、編集中 ValidationRuleのバインドされたビューモデルを参照する方法を理解できません。DataGridRow

私が知っている 1 つの回避策は、ValidationStepが に設定されている場合です。メソッドUpdatedValueValueパラメーターは になり、そこからビューモデルを抽出できます。しかし、ビューモデルを更新する前に検証する必要があるため、これは役に立ちません。ValidateBindingExpression

4

1 に答える 1

0

私は回避策を管理しましたが、エレガントとはほど遠いものです。-に aDependencyPropertyを追加することになりましたが、から継承しないため、 a である別のクラスにパラメーターをダンプしてから、そのクラスのインスタンスを.ValidationRuleValidationRuleDependencyObjectDependencyObjectValidationRule

この場合、私が作成している「パラメータ」ValidationRuleは、DataGridそれ自体です。ValidationRule論理ツリーの一部ではない ため、これを実現するためだけにウィンドウ リソースでバインド プロキシを使用する必要がありました。

ValidationRule実際に実行されるValidateと、インスタンスを使用しDataGridて編集行を見つけ、その行のバインドされたビューモデルを取得します。ビューモデルを調べて、提案された値が受け入れられるかどうかを判断できます。

おそらくいくつかのコードを追加できますが、正直なところ、これよりも良い方法が必要です。すでに、いくつかの考えられるバグを考えることができます。以下は、私が最も役に立った例です。

ValidationRule WPF の添付または依存プロパティ

于 2013-12-13T22:32:14.667 に答える