我有一个DatePicker如下:
<DatePicker x:Name="MyDatePicker" Grid.Row="0" Grid.Column="1" HorizontalOptions="Center" VerticalOptions="Center" Date="{Binding BookingDate}" Format="dd/MM/yyyy" />
我希望在我的ViewModel中获得一个新选择的日期,但是当我为DateSelected添加绑定时:
DateSelected="{Binding MyViewModelJob}"
它不起作用(带有DatePicker的页面甚至无法打开)。
我应该在XAML和我的ViewModel中做些什么来获取日期?
答案 0 :(得分:1)
DateSelected不是可绑定属性,它是DatePicker类型的Event。如果要通过viewmodel上的属性更改日期,则只需更改“PreviewDate”属性,该属性已附加到DatePicker的Date属性。
下面是一些伪代码:
public class YourViewModel : INotifyPropertyChanged //Implement INPC to update the view when a property changes
{
private DateTime bookingDate;
public DateTime BookingDate
{
get { return bookingDate; }
set
{
bookingDate = value;
OnPropertyChanged("BookingDate"); //Call INPC Interface when property changes, so the view will know it has to update
}
}
private void ChangeDate(DateTime newDate)
{
BookingDate = newDate; //Assing your new date to your property
}
}
答案 1 :(得分:1)
在DatePicker中是Date。这是可绑定的属性。
在XAML中:
<DatePicker
HeightRequest="40"
Date ="{Binding StartDate}"
/>
在ViewModel中你可以写:
public class YourViewModel : INotifyPropertyChanged
{
DateTime _startdate;
public DateTime StartDate
{
get
{
return _startdate;
}
set
{
_startdate = value;
RaisePropertyChanged("StartDate");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
在此之后,您可以在所有ViewModel中使用StartDate,这样您就可以获取或设置日期。