[英]How can I add minimum date validation check for DatePicker in Xamarin
我有兩個DatePicker
(名為 fromdate 和 todate)和一個按鈕(名為 save)。
默認情況下,今天的日期將填充在兩個DatePicker
中。 而且我添加了最短日期驗證(用戶只能選擇今天或更晚的日期。
如果今天的日期是 5 月 30 日,並且用戶從開始日期選擇 6 月fromdate
日,然后單擊“確定”。 現在默認的今天日期顯示在todate
中。 我想要一個驗證,如果用戶在fromdate
中選擇 15th June 並單擊確定,那么todate
應該填充fromdate
。
這可以通過將 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;
}
希望這可以幫助。
所以你有兩個 DatePickers: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;
}
現在,對於兩個 DatePickers,您必須選擇一個不是過去的日期。
然后你可以創建方法“FromDate_Changed”(如果它沒有自動創建):
private void FromDate_Changed(object sender, PropertyChangedEventArgs e)
{
toDate.MinimumDate = fromDate.Date;
}
現在,每次當您從 fromDate 選擇器更改日期時,toDate 的最小日期將自動更改為您在 fromDate 中選擇的日期。
我知道這個問題已經有 2 年了,但也許將來如果有人正在尋找那個問題,他會找到一個更簡單的解決方案。
請原諒我的英語。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.