私はWPFでプログラミングしています。製造日と有効期限は2つの日付ピッカーです。私の有効期限を設定するにはどうすればいいですか?2つの日付ピックをリンクして日付を大きくしたり小さくしたりすることはできません。
答えて
残念ながら、WPF datepickerには最低限の日付プロパティはありませんが、DisplayDateStart依存プロパティがあります。 datepickerコントロールのカレンダーポップアップ部分では、このプロパティは割り当てられた値より前の日付を非表示にします。
ただし、ユーザーはdatepickerのテキストボックス部分を使用して有効期限を入力することができます。これを処理するには、両方のdatepickerのSelectedDateプロパティを検証する必要があります。 、
まずXAMLでDisplayDateStart依存性: - 私は(あなたが私に知らせている場合は、この質問の目的のために、私はあなたがMVVMを使用していないと仮定している)の両方を行うコードを添付しました
有効期限datepickerのプロパティは、製造日付ピッカーのSelectedDate依存性プロパティにバインドされています(したがって、有効期限付き日付ピッカーのカレンダーポップアップで無効な日付が表示されません)。あなたの要件には「製造年月日を超えて」と記載されているため、製造者の翌日には値コンバーターが返されなければなりません。
<StackPanel>
<StackPanel.Resources>
<yournamespace:NextDayConverter x:Key="NextDayConverter" />
</StackPanel.Resources>
<DatePicker x:Name="ManufacturingDatePicker"
SelectedDateChanged="OnSelectedDateChanged" />
<DatePicker x:Name="ExpiryDatePicker"
SelectedDateChanged="OnSelectedDateChanged"
DisplayDateStart="{Binding
ElementName=ManufacturingDatePicker,
Path=SelectedDate,
Converter={StaticResource NextDayConverter}}" />
</StackPanel>
NextDayConverter
は、以下に説明されていますnamespace YourNamespace
{
using System;
using System.Globalization;
using System.Windows.Data;
public sealed class NextDayConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null)
{
DateTime manufacturingDate = (DateTime)value;
DateTime minimumExpiryDate = manufacturingDate.AddDays(1);
return minimumExpiryDate;
}
return Binding.DoNothing;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
第二に、背後にあるコードでは、両方のdatepickersのSelectedDateChangedイベントのハンドラがあります。検証コードは、無効な有効期限(すなわち、製造日の前またはそれに等しい)をユーザが入力した場合に、有効期限を製造日に設定する。
private void OnSelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
if (ManufacturingDatePicker.SelectedDate.HasValue &&
ExpiryDatePicker.SelectedDate.HasValue &&
ExpiryDatePicker.SelectedDate <= ManufacturingDatePicker.SelectedDate)
{
ExpiryDatePicker.SelectedDate = ManufacturingDatePicker.SelectedDate.Value.AddDays(1);
}
}
私はこれが役立つことを望みます。
ありがとうございます..ありがとうalot –
あなたは大歓迎です。 –
- 1. PHP date_sub。今日と日付を差し引くことはできません
- 2. 日付が指定された日付よりも大きいかどうか確認してください
- 3. 日付が指定された日付よりも大きいかどうか確認してください
- 4. 日付をクリックしたときに背景色で円を塗りつぶすことはできません
- 5. MongoDBはより大きく二つの日付
- 6. 日付を2つの日付の間で選択してください
- 7. PHPの日付()は正しくありません。
- 8. 日付を正しく解析できません
- 9. 指定された期間に1日あたり最大2つの日付の間の日付差
- 10. Dataweave - 日付から日数を引くことができません
- 11. 範囲に指定した日付よりも大きい日付が含まれている場合は、
- 12. 日付の比較 - 終了日は開始日より大きくする必要があります。
- 13. MySql.Data.MySqlClient.MySqlException:日付時刻の値が正しくありません
- 14. 日付が今日または空の日付より大きいオブジェクトを取得する
- 15. 特定の日付に1日中つぶやきを取得しようとしましたが、CSVファイルに書き込むことはありません
- 16. PHPの指定された日付範囲から日付を印刷できませんでした
- 17. 2つの日付を比較してください。 Sqlite
- 18. Laravel - 日付の構文よりも小さい/大きいところ
- 19. フォームはサイズを大きくしたり、大きなサイズにドラッグすることはできますが、サイズを小さくしたり、小さいサイズにドラッグすることはできません。
- 20. 日付が今日より大きいmysqlテーブルのレコードを選択してください
- 21. カラム名を日付として指定することはできません
- 22. Jqueryのsetdateは、実際に選択された日付よりも小さい日付を設定します。
- 23. SQL照会日付ソート順が正しくありません
- 24. symfonyフォーム:日付が正しくありません
- 25. Java:指定されたオブジェクトを日付としてフォーマットできません
- 26. fullcalendar-クリックしたイベントの日付を取得できません
- 27. 日付を解析できませんでした。
- 28. DatePickerの最小日付と最大日付はプロジェクトでは機能しません
- 29. 2つの日付の間の営業日を計算してください
- 30. javascriptの最初の日付よりも大きい2番目の日付
いくつかのコードを表示できますか? – Sourabh