LoginSignup
Kakeishi_Misa
@Kakeishi_Misa

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【C#】WPFでDatePickerをデータバインディングしたい

Q&AClosed

解決したいこと

WPFでDatePickerをデータバインディングしたいです。

下記のコードのように現在はxaml上で現在日付を表示するようにしていますが、
選択される日付が変更されるたびに毎回値を取得(バインディング)したいです。
xamlとコードビハインド、どのように修正すれば良いでしょうか。
宜しくお願い致します。

発生している問題・エラー

        <DatePicker
            x:Name="calendar"
            SelectedDate="{Binding Source={x:Static System:DateTime.Today}, Mode=OneTime}" 
            />
0

1Answer

選択される日付が変更されるたびに毎回値を取得

ならバインディングを使わずSelectedDateChangedイベントで値を取得する方が簡単です。

WPFのバインディングとは、あるコントロールのプロパティ(この場合DatePicker.SelectedDate)とある変数を結び付ける(Binding)設定をすることで、変数に値をセットするとDatePicker.SelectedDateが勝手に更新され、逆にSelectedDateが変更されると結び付けた変数の内容が勝手に変わる仕組みです。(双方向バインディングの場合)

Sample.xaml.cs
//最小限のDatePickerバインディングサンプル
public partial class Sample : Window
{
    private MyBindingSource bindsource = new MyBindingSource();

    public Sample()
    {
        InitializeComponent();
        DataContext = bindsource;
    }
}

public class MyBindingSource
{
    public DateTime Date { get; set; } = DateTime.Today;
}
Sample.xamlのDatePicker部分のみ
 <DatePicker SelectedDate="{Binding Date}"/>

こうすることでbindsource.Dateには常にDatePickerで選択した日付が入っています。

1

Your answer might help someone💌