私のウィンドウに2つのDecimalUpDownコントロールがあります。 1つは最大値を表示する必要があります。もう1つはTextBoxの最小値です。 最小コントロールは最大値より大きい値を持つことはできず、その逆もありません。2つのDecimalUpDownコントロール間の有効な値を確認する - MVVM
赤の値が間違ったものであることに注意してください。
どうすれば実装できますか? MVVMパターンを使用しています。
ありがとうございます。 Steve
私のウィンドウに2つのDecimalUpDownコントロールがあります。 1つは最大値を表示する必要があります。もう1つはTextBoxの最小値です。 最小コントロールは最大値より大きい値を持つことはできず、その逆もありません。2つのDecimalUpDownコントロール間の有効な値を確認する - MVVM
赤の値が間違ったものであることに注意してください。
どうすれば実装できますか? MVVMパターンを使用しています。
ありがとうございます。 Steve
あなたはあなたのビューモデルで検証ロジックを実装する必要があります。
public class MyViewModel : IDataErrorInfo
{
private int _min;
public int Min
{
get { return _min; }
set { _min = value; }
}
private int _max;
public int Max
{
get { return _max; }
set { _max = value; }
}
public string Error { get { return null; } }
public string this[string columnName]
{
get
{
switch(columnName)
{
case "Min":
if (_min > _max)
return "Min cannot be greater than Max";
break;
case "Max":
if (_max < _min)
return "Max cannot be smaller than Min";
break;
}
return null;
}
}
}
XAML:
<xctk:IntegerUpDown Value="{Binding Min,ValidatesOnDataErrors=True}" />
<xctk:IntegerUpDown Value="{Binding Max,ValidatesOnDataErrors=True}" />
WPFのデータ検証方法については、次のブログ記事を参照してください。https://blog.magnusmontin.net/2013/08/26/data-validation-in-wpf/
ビューモデルでIDataErrorInfo
またはそれより新しいINotifyDataErrorInfo
のいずれかをbasiclly実装します。
テキストボックスからonChangeイベントを使用できます。 (あなたはすべてのイベントを見つけるでしょう、あなたのテキストボックスを選択して、イベントウィンドウを確認してください)
温家宝変更=>値 を比較すると、エラー=>ショーのメッセージ私はあなたがのセッターで最大と最小値を比較する必要があります理解し
こんにちは@AhdBkあなたの提案をありがとうが、私は本当に2つのDecimalUpDownがお互いを比較する必要があります。 TextBoxはデモンストレーションの目的のためだけです – jclstefan
あなたのVMのプロパティ
MinimumValueUpDownのMaxValueプロパティをMaximumValueUpDownの値にDataBindできますか?およびその逆?それが私の最初のアイデアです。 – Fildor
あなたはMVVMを言った。 xamlを表示し、モデルを表示します。そうすれば答えが出やすくなります。質問は少し広いですが、 "validation wpf"を検索してください。私は単にsetterを投げて、['ExceptionValidationRule'](https://msdn.microsoft.com/en-us/library/system.windows.data.binding.validatesonexceptions(v = vs.110).aspx)他の人は、コンバーターや[強制](http://drwpf.com/blog/2010/05/05/value-coercion-for-the-masses/)(専用ユーザーコントロールの依存関係プロパティー)を利用することもできます。 – Sinatr