如何在UWP MVVM中使用CalenderView

我想绑定选定的日历视图项并将其设置为DateTime变量。

我的CalenderView Xaml看起来像:

 

我在Datacontext类中有一个DateTime项:

  private DateTime _DueDate; public DateTime DueDate { get { return this._DueDate; } set { if (this._DueDate != value) { this._DueDate = value; base.PropertyOnChanged("DueDate"); } } } 

和DateTimeConverter:

  public class DateConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) { DateTime date = ((DateTime)value); return date.Day + "." + date.Month + "." + date.Year; } public object ConvertBack(object value, Type targetType, object parameter, string language) { return DateTime.Parse((string)value); } } 

这里也是日历视图的文档:

CalenderView MSDN

在Docs中是Property SelectedDate,但我只在XAML SelectedDateChanged EventHandler中看到。 但我想在MVVM中做到这一点。

我的问题是我不知道我可以设置绑定的属性。 我查看了Doc但是我只从DatePicker中找到了Date=""属性,但是我找不到CalenderView的任何内容。

UPDATE

继评论之后

@Juo Zuo:“CalendarView有一个SelectedDates属性。通常,我们可以使用此属性设置所选日期,如:MyCalendarView.SelectedDates.Add(new DateTime(2016,5,5));.但是这个属性是只读的,我们不能用它来绑定。所以,我担心没有办法用Binding设置选定的日期“

我会扩展问题。

我的问题是:

有没有办法使用MSDN的MVVM模式的日历视图?

您需要做的就是创建一个附加属性并封装其中的SelectedDates.Add逻辑。

 public static class CalendarViewHelper { public static IList GetSelectedDates(DependencyObject obj) { return (IList)obj.GetValue(SelectedDatesProperty); } public static void SetSelectedDates(DependencyObject obj, IList value) { obj.SetValue(SelectedDatesProperty, value); } public static readonly DependencyProperty SelectedDatesProperty = DependencyProperty.RegisterAttached("SelectedDates", typeof(IList), typeof(CalendarView), new PropertyMetadata(null, (d, e) => { var cv = d as CalendarView; var dates = e.NewValue as IList; if (cv != null && dates != null) { foreach (var date in dates) { cv.SelectedDates.Add(date); } } })); }  

如果您的Dates属性中包含多个项目,请确保将SelectionMode更改为Multiple