次のようなプロパティがあります。
private int _wertungvalue;
public int WertungValue
{
get { return _wertungvalue; }
set
{
_wertungvalue = value;
RaisePropertyChanged(() => WertungValue);
}
}
TextBoxにバインドされています
<TextBox Text="{Binding WertungValue, Mode=TwoWay}"/>
したがって、ユーザーは好きなものを入力できます (数値のテキストボックスは必要ありません!)。ユーザーが「5」と入力すると、WertungValue の値は 5 です。ユーザーが「Test」と入力すると、赤い境界線がポップアップ表示され、WertungValue の値は 5 のままです。
今、私はRelayCommandも持っています
RelayCommand(DeleteExecute,CanDelete);
CanDelete では、プロパティが int かどうかを確認します
private bool CanDelete()
{
int ot = 0;
if (int.TryParse(WertungValue.ToString(),out ot) == false)
return false;
else
return true;
}
値が整数の場合にのみ RelayCommand が機能するようにします。つまり、ユーザーが「Test」と入力すると、RelayCommand は false を返す必要があります。プロパティの値は常に整数ですが、ビューでは文字列であるため、問題は決して false を返さないことです。
プロパティを文字列型にしたり、TextBox で UpdateSourceTrigger=PropertyChanged を使用したりしたくありません。また、数値のみの TextBox も作成したくありません... ユーザーは好きなものを入力できるようにする必要がありますが、RelayCommand は整数を入力した場合にのみ機能する必要があります。