11

我正在開發WinPhone應用程序。如何將最大日期/分鐘日期設置爲WinPhone DatePicker

<DatePicker x:Name="MyDatePicker" MinYear="2016" MaxYear="2017"/> 

該代碼無法正常工作。

我可以選擇前幾年,我可以選擇2015年,2018年等。如果可能,我想禁用DatePicker本身的月份和日期。

總之,我想設置日曆的最小和最大允許日期,以便在日曆中禁用不需要的日期。

+0

嗨,Rajan!你在使用Xamarin.Forms嗎? –

+0

不......我正在使用Xamarin Native –

+1

謝謝Rajan。 Xamarin Native僅適用於iOS和Android。在不使用Xamarin.Forms的情況下開發WinPhone應用程序不涉及Mono或Xamarin技術堆棧。下面的一個答案已經用Xamarin.Forms給出了,所以我從你的問題中刪除了「Xamarin」,以幫助你得到更好的答案。 –

回答

5

根據documentation,XAML分析器不具有轉換邏輯,用於將字符串轉換爲日期作爲DateTimeOffset對象,因此MinYearMaxYear屬性不能被設置爲XAML屬性字符串。有以下選項可設置這些屬性:

  1. 在C#代碼中執行此操作。一個例子可以發現here
  2. 在您的視圖模型類(或數據上下文中的另一個對象)中提供相關的屬性,並使用綁定將值傳播到控件DatePicker

視圖模型類:

public DateTimeOffset MinYear 
{ 
    get { return new DateTime(2016, 1, 1); } 
} 

public DateTimeOffset MaxYear 
{ 
    get { return new DateTime(2017, 12, 31); } 
} 

XAML佈局:

<DatePicker x:Name="MyDatePicker" MinYear="{Binding MinYear}" MaxYear="{Binding MaxYear}" /> 
+0

我想設置最低和最高日!基本上我想設置最大和最小日期而不是一年 –

+0

@RajanM你不能用'DatePicker'來完成。檢查解決方法在https://stackoverflow.com/a/32577387/2595805 –

3

如果您正在使用Xamarin.Forms然後

<StackLayout> 
    <DatePicker VerticalOptions="CenterAndExpand" Date="{x:Static sys:DateTime.Now}"> 
    <DatePicker.Format>yyyy-MM-dd</DatePicker.Format> 
    <DatePicker.MinimumDate> 
     <sys:DateTime x:FactoryMethod="Parse"> 
      <x:Arguments> 
       <x:String>Jan 1 2000</x:String> 
      </x:Arguments> 
     </sys:DateTime> 
    </DatePicker.MinimumDate> 
    <DatePicker.MaximumDate> 
     <sys:DateTime x:FactoryMethod="Parse"> 
      <x:Arguments> 
       <x:String>Dec 31 2050</x:String> 
      </x:Arguments> 
     </sys:DateTime> 
    </DatePicker.MaximumDate> 
    </DatePicker> 

https://developer.xamarin.com/api/type/Xamarin.Forms.DatePicker/

檢索如果你只想已經多年,然後用一個正常的選擇器,並給它的年份列表在您接受的範圍內。 https://developer.xamarin.com/api/type/Xamarin.Forms.Picker/

+1

感謝Joagwa!問題是詢問一個Native WinPhone應用程序,而不是Xamarin.Forms。 –

+0

我仍然會這樣做,關於使用標準選取器,或者如果UWP應用程序使用flyoutpicker/flyout。 https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.flyout 而只是有一個可供選擇的年份列表。 – Joagwa

+0

@Joagwa - Xaml可以用於贏手機嗎?我很困惑,因爲我在做xamarin本地開發 –

1

在Winphone 8.1有沒有辦法設置 最小和最大的日期eugene-berdnikov在上面建議帖子你可以設置MinYearMaxYear的月份和日期,你將不得不通過代碼驗證來處理。

UWP(通用Windows平臺)CalendarDatePicker使用它你可以設置爲MinDateMAXDATE財產

如果你想支持Windows 10及以後的版本中,你可能會開始遷移到UWP(通用Windows平臺)

這裏是一個移民tutorial

它的那麼容易,因爲創建新的項目UWP和c選擇現有的文件並重寫一些代碼。

ViewModel類

public DateTimeOffset MinDate 
{ 
    get { return new DateTime(2016, 1, 1); } 
} 

public DateTimeOffset MaxDate 
{ 
    get { return new DateTime(2017, 12, 31); } 
} 

XAML佈局

<CalendarDatePicker MinDate="{Binding MinDate}" MaxDate="{Binding MaxDate}"/> 

後面的代碼

CalendarDatePicker calObj=new CalendarDatePicker(); 

DateTime minDate = new DateTime(2016, 1, 1, 0, 0, 0) 
minDate = DateTime.SpecifyKind(minDate, DateTimeKind.Utc); 
DateTimeOffset min_Date = minDate; 

DateTime maxDate = new DateTime(2017, 1, 1, 0, 0, 0) 
maxDate = DateTime.SpecifyKind(maxDate, DateTimeKind.Utc); 
DateTimeOffset max_Date = maxDate; 

calObj.MinDate=min_Date; 
calObj.MaxDate=max_Date; 

請知道,也UWP支持的DatePicker這是Windows Phone的一部分8.1

我的建議是在winphone 8.1使用的DatePicker和Windows 10使用CalendarDatePicker

Here可用的日期和時間控制列表,UWP

大多數Windows Phone 8.1設備也有10更新,所以你可能會看到很多人朝着10

+0

任何第三方控制在Windows 8.1中做到這一點? –

+1

CalendarDatePicker是有用的,但它在8.1中不可用...很高興知道日期選擇器也可用於10 –

相關問題