WPF基础(六)DatePicker没办法实现数据绑定

于是,我采用了下面的方法,来传递对象给命令函数。 

  <i:InvokeCommandAction Command="{Binding dpkDateStartSelectedDateChangedCommand}" CommandParameter="{Binding ElementName=dpkDateStart}"/>

 命令函数:

       /// <summary>
        /// 开始日期选择
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DpkDateStart_SelectedDateChanged(object obj)
        {
            //dtStart = (DateTime)obj;
            DatePicker a = obj as DatePicker;
            if (dtStart.ToString() != null && dtStart.ToString() != "")
            {
                try
                {
                    dtEnd = DateTime.Parse(dtStart.ToString());
                    if (dtStart > dtEnd)
                    {
                        EMessageBox.Show("导出起始日期不能晚于终止日期!", "", EMessageBoxButton.OK, EMessageBoxImage.Warning);
                        dtStart = null;
                    }
                }
                catch (Exception ex)
                {
                    EMessageBox.Show("日期格式错误!", "", EMessageBoxButton.OK, EMessageBoxImage.Error);
                    //m_cGlobalData.m_cLogs.WriteFaultLog("ExInPortDlg::DpkDateStart_SelectedDateChanged--  日期格式错误!" + ex.Message);
                }
            }
        }

网页,别业也遇到了我相同的问题:

https://stackoverflow.com/questions/20659070/wpf-datepicker-returns-previously-selected-date-using-mvvm

https://stackoverflow.com/questions/4542291/datepicker-selecteddate-not-changing-when-text-is-input

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
WPFDatePicker可以通过数据绑定实现与其他属性或数据源的绑定。下面是一个简单的示例,演示如何将DatePicker与ViewModel中的日期属性进行绑定: 首先,在XAML文件中,将DatePicker的SelectedDate属性绑定到ViewModel中的日期属性,如下所示: ```xml <DatePicker SelectedDate="{Binding MyDate}" /> ``` 接下来,在ViewModel中声明一个DateTime类型的属性,并实现INotifyPropertyChanged接口,以便在属性值发生改变时通知UI更新,示例如下: ```csharp private DateTime _myDate; public DateTime MyDate { get { return _myDate; } set { _myDate = value; OnPropertyChanged(nameof(MyDate)); } } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } ``` 在ViewModel的构造函数中,可以初始化日期属性的初始值,示例如下: ```csharp public MyViewModel() { MyDate = DateTime.Now; // 初始化为当前日期 } ``` 这样,当用户选择DatePicker中的日期时,ViewModel中的日期属性将自动更新,反之亦然。 需要注意的是,以上示例仅涉及单向绑定,即从ViewModel到UI的绑定。如果需要实现双向绑定,即用户选择日期后更新ViewModel中的属性值,可以将DatePickerBindingMode属性设置为TwoWay,如下所示: ```xml <DatePicker SelectedDate="{Binding MyDate, Mode=TwoWay}" /> ``` 这样就可以实现DatePicker数据绑定了。希望对你有所帮助!如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值