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を使用して以下の1つの回答が既に与えられていますので、より良い回答を得るために質問から「Xamarin」を削除しました。 –

答えて

5

documentationによると、XAMLパーサーはとてもMinYearMaxYearプロパティはXAMLの属性文字列として設定することができませんでした、DateTimeOffsetオブジェクトとして日付に文字列を変換するための変換ロジックを持っていません。これらのプロパティを設定するオプションがあります。

  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レイアウト:Winphone 8.1で

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

私は最低日と最高日も設定したいと思います!基本的には年よりむしろ最大値と最小値を設定したい –

+0

@RajanM 'DatePicker'ではできません。回避策をhttps://stackoverflow.com/a/32577387/2595805 –

3

あなたはただ年を持っているしたい場合は、通常のピッカーを使用し、それに年のリストを与えるhttps://developer.xamarin.com/api/type/Xamarin.Forms.DatePicker/

より作成

<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> 

その後、Xamarin.Formsを使用している場合あなたの受け入れられた範囲で。 https://developer.xamarin.com/api/type/Xamarin.Forms.Picker/

+1

ありがとうJoagwa!質問は、Xamarin.Formsではなく、ネイティブWinPhoneアプリについて質問しています。 –

+0

UWPアプリの場合、標準のピッカー、flyoutpicker/flyoutを使用することに関して、私はまだ上記を行います。 https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.flyout ちょうど選択可能な年のリストがあります。 – Joagwa

+0

@Joagwa - 勝利の電話でXamlを使用できますか?私はxamarinをやっているので混乱しています。ネイティブ開発 –

1

最小および最大日付を設定する方法はありませんが、eugene-berdnikovは上記で示唆したようにあなたが設定できる投稿MinYearMaxYearあなたはコード検証を通じて処理する必要があります月と日。

しかしUWP(ユニバーサルWindowsのプラットフォーム)は(あなたがMinDateプロパティmaxDateのプロパティに

を設定することができますが、窓10および将来のリリースをサポートしたい場合は、UWPへの移行を開始することが使用してCalendarDatePickerを持っていますユニバーサルのWindowsプラットフォーム)ここで

は、移行が新しいUWPプロジェクトとCを作成するのと同じくらい簡単tutorial

そのです既存のファイルを複製し、すべてのコードを書き換えます。

の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も知っていますサポートしているWindowsの携帯電話の一部である日付ピッカー 8.1

私の提案はwinphoneである8.1の使用日付ピッカーおよびWindows 10の使用CalendarDatePicker

HereはUWP

可能な日付と時刻コントロールのリストであるの大半Windowsの電話機8.1デバイスにも10個のアップデートがあるので、多くの人が10に向かって動いているのが見えます。

+0

で確認してください。サードパーティ製のコントロールをWindows 8.1で実行するには? –

+1

CalendarDatePickerは便利ですが、8.1では利用できません...日付ピッカーが10で利用できることを知っておきたい –

関連する問題