0

私はテキストボックスから派生し、カレンダーとタイムピッカーを備えたポップアップを導入しました。これにより、完全に機能する日時ピッカーが生まれました。ここで、日時ピッカーに無効なテキスト ( date time を除く) を表示する必要がある場合は、データベースから無効なものが取得された場合のように、ロード時にのみ表示できるようにする必要があります。 、表示できるはずです。

ただし、ユーザーが無効な値を入力しようとした場合は、入力を制限する必要があります。

テキストボックスのテキストプロパティをビューモデルのプロパティにバインドしたので、どうすれば同じことを達成できますか。また、textchanged イベントを処理します。一度データ

OK、キャンセルの操作もあります。

フラグを使用することを考えましたが、OK/キャンセルを使用すると、フラグを設定/再設定するというジレンマに陥ります。

または、バインディングのモードが役立ちますか?

どんな助けにも感謝します。前もって感謝します。

4

1 に答える 1

1

Binding.UpdateSourceTrigger値をに変更LostFocusして、ユーザーがOK Button. この方法で、プロパティの着信値を「拒否」できるはずです。

public string Text
{
    get { return text; }
    set
    {
        DateTime date;
        if (!DateTime.TryParse(value, out date)) // Use whatever condition you like
        {
            text = value;
        }
        else text = string.Empty;
    }
}

Focusこれにより、失われた UI コントロールから無効な値も消去されます。ただし、使用LostFocusが適切でない場合は、Binding.UpdateSourceTrigger値を に変更し、メソッドをExplicit手動で呼び出してUpdateSourceを更新することもできますBinding。詳細については、MSDN のBinding.UpdateSourceTrigger プロパティページを参照してください。

于 2013-10-22T12:25:37.133 に答える