我有两个DatePicker
(名为fromdate和todate)和一个按钮(名为save)。
默认情况下,今天的日期将同时填入DatePicker
。我添加了最小日期验证(用户只能选择今天或更长的日期。
如果今天的日期是5月30日,并且用户从fromdate
选择6月15日并点击确定。现在,默认的今天日期显示在todate
中。
我希望进行验证,例如,如果用户在fromdate
中选择了6月15日,然后点击确定,则todate
应填充fromdate
。
答案 0 :(得分:5)
这可以通过将toDate DatePicker的MinimumDate绑定到FromDate属性来完成。
我不知道你的代码所以我会给你一个例子:
想象一下你有这样的XAML:
<?xml version="1.0" encoding="utf-8"?>
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-YourProject"
x:Class="YourProject.YourClass">
<StackLayout>
<DatePicker Date="{Binding FromDate}" MinimumDate="{Binding FromMiminumDate}" />
<DatePicker Date="{Binding ToDate}" MinimumDate="{Binding FromDate}" />
</StackLayout>
</ContentPage>
你有一个像这样的ViewModel:
public class YourViewModel : INotifyPropertyChanged
{
public YourViewModel ()
{
FromMiminumDate = DateTime.Today;
}
private DateTime _fromDate;
public DateTime FromDate
{
get { return _fromDate; }
set
{
if (_fromDate == value)
return;
_fromDate = value;
NotifyPropertyChanged (nameof(FromDate));
}
}
private DateTime _toDate;
public DateTime ToDate
{
get { return _toDate; }
set
{
if (_toDate == value)
return;
_toDate = value;
NotifyPropertyChanged (nameof(ToDate));
}
}
private DateTime _fromMiminumDate;
public DateTime FromMiminumDate
{
get { return _fromMiminumDate; }
set
{
if (_fromMiminumDate == value)
return;
_fromMiminumDate = value;
NotifyPropertyChanged (nameof(FromMiminumDate));
}
}
public event PropertyChangedEventHandler PropertyChanged;
void NotifyPropertyChanged (string propertyName)
{
PropertyChanged?.Invoke (this, new PropertyChangedEventArgs (propertyName));
}
}
这样,每次更改FromDate Picker中选择的日期时,ToDate Picker的MinimumDate也会更改。
当然,后面的XAML代码将简单如下:
public YourClass ()
{
var VM = new YourViewModel ();
InitializeComponent ();
BindingContext = VM;
}
希望这有帮助。
答案 1 :(得分:1)
因此,您有两个DatePicker:fromDate和toDate。
您可以在fromDate中添加一个称为“ PropertyChanged”的属性:
<DatePicker
x:Name="fromDate"
PropertyChanged="FromDate_Changed"
/>
<DatePicker
x:Name="toDate"
/>
现在,您可以进入xaml.cs文件并将以下内容添加到构造函数中:
public ItemsPage()
{
InitializeComponent();
fromDate.MinimumDate = DateTime.Now;
toDate.MinimumDate = DateTime.Now;
}
现在使用两个DatePicker,您都必须选择一个非过去的日期。
然后,您可以创建方法“ FromDate_Changed”(如果尚未自动创建):
private void FromDate_Changed(object sender, PropertyChangedEventArgs e)
{
toDate.MinimumDate = fromDate.Date;
}
现在,每次从fromDate选择器更改日期时,从toDate的最小日期将自动更改为在fromDate中选择的日期。
我知道这个问题已经2岁了,但是将来如果有人正在寻找确切的问题,他会找到一个更简单的解决方案。
请问我的英语。