Textbox for Integer DataTypeでのPoC検証

私は私のPOCOエンティティのintフィールドにバインドされているテキストボックスを使用しているWPFアプリケーションを開発しています。テキストボックスをクリアすると、nullではないフィールドであるため、現在のオブジェクトが無効になります。

しかし、私のテキストボックスをクリアすると、int型の値に設定することはできませんstring.emptyに変換されるので、私のintフィールドは決して更新されず、オブジェクトは有効なままです。

親切に、これに対する論理的な解決方法を提案します。

0
必須属性を設定しますか?
追加された 著者 Oskar Kjellin,
0に設定しますか?
追加された 著者 Oskar Kjellin,
Prism、Caliburn、MVVM Lightなどの特定のMVVM実装を使用していますか?
追加された 著者 Panagiotis Kanavos,
これは必須の属性ではなく、バインドされたプロパティに値がない場合でも、以前の入力値を保持するプロパティです。
追加された 著者 manav inder,
MVVM Lightを使用しています
追加された 著者 manav inder,

4 答え

デフォルトでWPFは、検証エラーが発生したときに ErrorTemplate を表示する必要があります。これには、文字列フィールドを int に格納しようとするなど、無効なキャストによる検証エラーが含まれます。 TextBox の既定の ErrorTemplate は赤い枠線で、ほとんどのユーザーにとっては何かが間違っていて変更が保存されないことを示しています。

それ以上のものが必要な場合は、バインドで int に値をキャストしようとする IValueConverter を使用して、0(または無効な値)それが失敗した場合、あなたのオブジェクトはユーザーが何を入力しても何かで更新されます。

0
追加された

1つの方法は、代わりに文字列値にバインドすることです(モデルを汚染したくない場合は、おそらくビューモデルに追加します)。次に文字列プロパティのセッターで文字列を整数に変換してintに格納しますプロパティ。

0
追加された

私は答えをここからコピーしました。それがあなたにも役立つことを願っています。

viewmodelにint型のプロパティがある場合、バインディングのちょうど   あなたのビューにint型に変換可能な入力がある場合は動作します。さもないと   あなたのビューモデルは通知されません。今のところ2つの方法があります:

     

まず、あなたの視点が数値入力を受け入れることを確認します(   あなたの数字のテキストボックス)とviewmodelプロパティはintにすることができます。

     

または第2:viewmodelプロパティの型はtypeof stringです。   IDataErrorInfoは、入力が数値でないときにビューに通知させます。

0
追加された

私が見ているように、intコントロールに「空の」値を設定することはできません。 おそらく、拡張WPFツールキット IntegerUpDown コントロールを使用すると、 NULL値の代わりにテキストを表示するウォーターマーク、またはデフォルト値を設定します。値は0にすることができます。

また、必要に応じて隠すことができるボタンスピナーを備えています。

0
追加された
他のコントロールと同じように検証を使用することができます。ヌルが設定されているときにデフォルト値を設定できるように更新しました。
追加された 著者 Natxo,
ナー、整数updownコントロールは、私のクライアントが望むものではない、私は論理的で実際のポコの検証に近いものをしたい。
追加された 著者 manav inder,