如何在UWP MVVM中使用CalenderView
我想绑定选定的日历视图项目并将其设置为 a DateTime变量。如何在UWP MVVM中使用CalenderView
我CalenderView的XAML看起来像:
<CalendarView Grid.Row="6" Grid.ColumnSpan="2" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="20"/>
我在DataContext类的日期时间项目:
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);
}
}
这里也是文件到日历视图:
在文档是属性SelectedDate,但我只在XAML SelectedDateChanged EventHandler中看到。但我想在MVVM中做到这一点。
我的问题是我不知道我可以在哪个属性上设置 绑定。我查看了文档,但是我只能从DatePicker中找到Date=""
属性 ,但我没有找到CalenderView的任何内容。
UPDATE
继从
@Juo佐注释:“CalendarView有SelectedDates属性通常情况下,我们可以使用这个属性来设置选择的日期,如:。MyCalendarView.SelectedDates.Add (新的DateTime(2016,5,5));然而这个属性是只读的,我们不能用它来绑定,所以我恐怕没有办法用绑定来设置选定的日期“
我会扩大这个问题。
我的问题是:
有没有办法使用了从MSDN MVVM模式的日历视图?
您只需创建一个附属属性并在其中封装SelectedDates.Add
逻辑。
public static class CalendarViewHelper
{
public static IList<DateTimeOffset> GetSelectedDates(DependencyObject obj)
{
return (IList<DateTimeOffset>)obj.GetValue(SelectedDatesProperty);
}
public static void SetSelectedDates(DependencyObject obj, IList<DateTimeOffset> value)
{
obj.SetValue(SelectedDatesProperty, value);
}
public static readonly DependencyProperty SelectedDatesProperty =
DependencyProperty.RegisterAttached("SelectedDates", typeof(IList<DateTimeOffset>), typeof(CalendarView),
new PropertyMetadata(null, (d, e) =>
{
var cv = d as CalendarView;
var dates = e.NewValue as IList<DateTimeOffset>;
if (cv != null && dates != null)
{
foreach (var date in dates)
{
cv.SelectedDates.Add(date);
}
}
}));
}
<CalendarView local:CalendarViewHelper.SelectedDates="{x:Bind Dates, Mode=OneWay}" />
如果您Dates
酒店内一个以上的项目,一定要改变SelectionMode
到Multiple
。
非常感谢,我会尝试当我在家=) – SeeuD1
@ SeeuD1,当然让我知道你走了。 –
您可以绑定到日历的“SelectedDate”。 'SelectedDate =“{Binding Path = DueDate,Converter = {StaticResource DateConverter}}”' – Lithium
没有SelectedDate只有SelectedDateChanges EventHandler – SeeuD1
姆姆有没有办法在ICommand中使用MVVM中的Calenderview?像'CalenderView c = sender作为CalenderView; DateTime d = c.Selecteddates;' – SeeuD1