【问题标题】:output to the SelectedDate property of a databound datepicker wpf输出到数据绑定日期选择器 wpf 的 SelectedDate 属性
【发布时间】:2013-02-25 18:47:07
【问题描述】:

我让日期选择器将其选定的日期属性绑定到数据集,如下面的 XAML 所示:

<DatePicker x:Name="date_picker" Margin="0,0,0.2,0" SelectedDate="{Binding Date, Mode=TwoWay, 
NotifyOnValidationError=true, ValidatesOnExceptions=true, StringFormat=dd-MM-yyyy}" ToolTip="Please
select a date" FirstDayOfWeek="Monday" SelectedDateFormat="Short" DisplayDateStart="2013-01-01" 
DisplayDateEnd="2020-01-01" />

但是当窗口加载时,我希望默认输出是今天的日期,而不是默认的“选择日期”,但是当我使用下面的代码时,我只会得到默认的“选择日期”。我认为这可能是因为 SelectedDate 属性被使用了两次。我该如何解决这个问题?

date_picker.SelectedDate = DateTime.Today; 

【问题讨论】:

标签: c# wpf visual-studio-2010 data-binding datepicker


【解决方案1】:

不要在程序代码中操作 UI 元素。

如果 DatePicker 的 SelectedDate 属性绑定到 someobject 的 Date 属性,为什么不直接在底层对象中设置数据?

public class SomeObject
{
    public DateTime Date {get;set;}

    public SomeObject()
    {
        Date = DateTime.Today;
    }

}

在程序代码中设置 UI 元素的属性完全违背了 DataBinding 的目的。

你必须记住UI is Not Data

【讨论】:

  • 我不确定如何使用/引用这个 SomeObject 类
  • @Hamoudy HighCore 使用了 SomeObject ,因为您没有指定要使用此日期变量做什么。例如,如果您的应用程序是一个约会安排应用程序,并且您希望将 datepicker 用于约会日期,那么 SomeObject 将是一个描述约会的类,并且还可能包含名称、描述等属性。HighCore 提供的链接展示了一个很好的简单的 MVVM 示例。但是,如果要更新 UI,还需要实现 INotifyPropertyChanged。我将发表另一条评论,并附上一个很好的例子的链接
  • rachel53461.wordpress.com/2011/05/08/simplemvvmexample 这在我启动 MVVM 时帮助了我很多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多