OK、WPF(MVVMを使用)で作業し、質問に出くわしました、いくつかの入力が必要です。次に、ユーザがクリアするときWPFデータバインディングバインディングエラー通知
<TextBox Text={Binding Fee, ValidatesOnDataErrors=true}/>
:私は、XAMLでそれにバインドしようと
public class SimpleClassViewModel
{
DataModel Model {get;set;}
public int Fee {get { return Model.Fee;} set { Model.Fee = value;}}
}
:私は以下のような単純なクラス
を(私はIDataErrorInfoを実装していると仮定)を持ちますstring.emptyをintに変換できないため、データバインディングエラーが発生します。料金は必須フィールドですが、データバインディングが変換されないため、クラスが更新されないためエラー情報を提供できません。だから私は次のことをする必要がありますか?
public class SimpleClassViewModel
{
DataModel Model {get;set;}
int? _Fee;
public int? Fee
{
get { return _Fee;}
set { _Fee = value;if (value.HasValue) { Model.Fee = value;}
}
}
私はあなたに同意するかどうかわかりません。手数料はあなたが計算するためのプロパティであるようですので、数値でなければなりません。すべての数値フィールドは、文字列を受け入れるテキストボックスを介して入力されます。あなたが提案する方法では、数値を表すすべてのプロパティを文字列と数値の両方で実装する必要があります。コンバータを使用すると、変換コードを1回書く必要があります。 – Dabblernl
変換コードを複数回記述する必要はありません。必要に応じて変換コードを取り除くだけです。しかし、通常、TryParseメソッドへの単純な呼び出しであるため、そこには痛みはありません。また、VMにコードを入れることで、デザイナーが再生するビューで間違ってしまうことも少なくなります。 –