0

int に解析された後、値がオブジェクトの int プロパティに渡される TextBox があります。

ValidationProvider を使用すると、検証時にこの変換手順が無視され、文字列を int32 に保存できないというエラーが表示されます。

フォームのテキスト ボックス値とビジネス オブジェクトの int 値の間のブリッジとして機能する文字列プロパティをオブジェクトに作成することでこれを修正できますが、検証レイヤーを満足させるためにドメイン オブジェクトを変更する必要があるため、このアプローチは嫌いです。 .

ドメインオブジェクトにブリッジプロパティを作成せずに、変換後に値を int に格納するテキストボックスを検証するにはどうすればよいですか?

4

2 に答える 2

1

私は解決策を見つけました。

文字列から整数への変換は自動的に行われますが、テキストボックスを空白のままにすると失敗します。

ValidationProviderのValueConvertハンドラーを使用してこれを修正しましたが、これはある種のバグであると確信しています。

編集:プロパティにバリデーターがない限り、ValueConvertイベントは発生しません。[ObjectValidator]をダミーとして使用して、入力変換が予想されるときにValueConvertイベントを発生させます。

于 2009-02-09T22:46:44.237 に答える
0

もう1つの「より良い」解決策は、TypeConversionValidatorをプロパティに追加することです。

属性の例:[TypeConversionValidator(typeof(int))]

編集:これを無視します。思ったとおりに動作しません。

于 2009-02-10T18:08:06.853 に答える