簡體   English   中英

如何在 Xamarin 中為 DatePicker 添加最小日期驗證檢查

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM