7

私はdateTimePickerを持っています。このDateTimePickerコンテンツをデータベースに書き込むために、次の値を取得します。

myDateTimePicker.selectedDate.value.

ユーザーが手動で日付を選択しても問題ありません。

しかし...ユーザーがDateTimePickerに直接日付を入力するとSelectedDate.value、古い値が表示されます。良い値は、.Textプロパティにあります。

と同期する方法はあり.Textます.SelectedValue.valueか?

多分私は他のプロパティを読む必要がありますか?

4

3 に答える 3

2

これは、コントロールがフォーカスを失ったときにのみ検証が実行されるために発生します。通常、このようなコントロールはダイアログ ボックス (つまり、ShowDialog) にあり、[OK] ボタンを (直接または AcceptButton プロパティを介して間接的に) アクティブにすることによって、ダイアログ ボックスが完成します。これにより、コントロールはフォーカスを失い、それ自体を検証します。

モードレス ウィンドウで DateTimePicker を使用している場合は、検証を実行するために、選択した値を使用する前にフォーカスを削除する必要があります。

于 2013-03-15T16:14:01.680 に答える
0

Extended WPF Toolkit からDateTimePickerを使用できます。

プロパティがありValue、このコントロールのテキスト ボックスに入力を開始すると、入力した値が自動的にバインディング プロパティに割り当てられます。

例:

XAML:

<extToolkit:DateTimePicker Value="{Binding MyDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

「extToolkit」は次のとおりです。

xmlns:extToolkit="http://schemas.xceed.com/wpf/xaml/toolkit"

ViewModel クラス:

class MainViewModel : INotifyPropertyChanged
{
    private DateTime _myDate;

    public DateTime MyDate
    {
        get { return _myDate; }
        set 
        { 
            _myDate = value; 
            OnPropertyChanged("MyDate"); 
            // only for testing...
            Console.WriteLine("value: " + value);
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    public void OnPropertyChanged(string name)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(name));
        }
    }
}
于 2013-03-15T16:13:06.673 に答える