Megosztás a következőn keresztül:


Dátumválasztó

A dátumválasztó lehetővé teszi, hogy a felhasználók érintéssel, egérrel vagy billentyűzettel adjanak meg egy honosított dátumértéket.

Példa a dátumválasztóra

Ez a megfelelő vezérlő?

Dátumválasztóval lehetővé teszi a felhasználó számára, hogy egy ismert dátumot( például születési dátumot) válasszon, ahol a naptár környezete nem fontos.

Ha a naptár környezete fontos, fontolja meg naptárdátumválasztó vagy naptárnézethasználatát.

A megfelelő dátum vezérlőelem kiválasztásáról további információt a Dátum- és idővezérlők cikkben talál.

Példák

A belépési pont megjeleníti a kiválasztott dátumot. Amikor a felhasználó kiválasztja a belépési pontot, a választófelület függőlegesen kinyílik középről, így a felhasználó kiválaszthatja a kívánt beállítást. A dátumválasztó átfedi a többi felhasználói felületet; nem tolja el a többi felhasználói felületet.

Példa a dátumválasztó kibontására

Dátumválasztó létrehozása

WinUI 3 Katalógus ikon A WinUI 3 Katalógus alkalmazás interaktív példákat tartalmaz a WinUI vezérlőire és funkcióira. Kérje le az alkalmazást a Microsoft Áruházból vagy keresse meg a forráskódot a GitHub webhelyen.

Ez a példa bemutatja, hogyan hozhat létre egyszerű dátumválasztót címsorral.

<DatePicker x:Name="exampleDatePicker" Header="Pick a date"/>
DatePicker exampleDatePicker = new DatePicker();
exampleDatePicker.Header = "Pick a date";

Az eredményként kapott dátumválasztó a következőképpen néz ki:

Példa a dátumválasztóra

A dátumválasztó formázása

Alapértelmezés szerint a dátumválasztó a napot, a hónapot és az évet jeleníti meg. Ha a dátumválasztó forgatókönyve nem követeli meg az összes mezőt, elrejtheti azokat, amelyekre nincs szüksége. Egy mező elrejtéséhez állítsa a megfelelő mezőVisible tulajdonságát false: DayVisible, MonthVisiblevagy YearVisible.

Itt csak az évre van szükség, így a nap és a hónap mezők rejtve vannak.

<DatePicker x:Name="yearDatePicker" Header="In what year was Microsoft founded?" 
            MonthVisible="False" DayVisible="False"/>

Egy dátumválasztó, amely rejtett nap- és hónapmezőket tartalmaz.

A ComboBox-beli egyes DatePicker sztringtartalmát egy DateTimeFormatteráltal hozzák létre. A DateTimeFormatter tájékoztatja, hogyan formázható a dátumérték egy formátum sablon vagy formátummintamegadásával. További információ: DayFormat, MonthFormatés YearFormat tulajdonságok.

Itt egy formátumminta a hónap egész számként és rövidítésként való megjelenítésére szolgál. A formátummintához konstans sztringeket adhat hozzá, például a hónap rövidítése körüli zárójeleket: ({month.abbreviated}).

<DatePicker MonthFormat="{}{month.integer(2)} ({month.abbreviated})" DayVisible="False"/>

Egy dátumválasztó, amely rejtette a nap mezőt.

Dátumértékek

A dátumválasztó vezérlőelem Date/DateChanged és SelectedDate/SelectedDateChanged API-kkal rendelkezik. Ezek között az a különbség, hogy a Date nem null értékű, míg SelectedDate null értékű.

A SelectedDate értéke a dátumválasztó feltöltésére szolgál, és alapértelmezés szerint null. Ha SelectedDatenull, a Date tulajdonság értéke 1600.12.31.; ellenkező esetben a Date érték szinkronizálva lesz a SelectedDate értékkel. Ha SelectedDatenull, a választó "nincs beállítva", és dátum helyett a mezőneveket jeleníti meg.

Egy dátumválasztó, amelyen nincs kijelölve dátum.

Beállíthatja a MinYear és MaxYear tulajdonságait, hogy korlátozza a megadható dátumértékeket a választóban. Alapértelmezés szerint a MinYear az aktuális dátum előtt 100 évvel, a MaxYear pedig az aktuális dátumtól 100 évvel korábbi értékre van állítva.

Ha csak MinYear vagy MaxYearállít be, győződjön meg arról, hogy a beállított dátum és a másik dátum alapértelmezett értéke alapján érvényes dátumtartományt hoz létre; ellenkező esetben a választóban nem lesz kiválasztható dátum. Például, ha csak a yearDatePicker.MaxYear = new DateTimeOffset(new DateTime(900, 1, 1)); van beállítva, az érvénytelen dátumtartományt hoz létre az alapértelmezett MinYearértékkel.

Dátumérték inicializálása

A dátumtulajdonságok nem állíthatók be XAML attribútumsztringként, mert a Windows Runtime XAML-elemző nem rendelkezik konverziós logikával a sztringek dátummá konvertálásához DateTime / DateTimeOffset objektumként. Íme néhány javasolt módszer az objektumok kódban való definiálására és az aktuális dátumtól eltérő dátumra való beállítására.

  • DateTime: Példányosítson egy Windows.Globalization.Calendar objektumot (az aktuális dátumra van inicializálva). A dátum módosításához állítsa be a Yearértéket, vagy hívja meg a(z) AddYearsfüggvényt. Ezután hívja meg Calendar.GetDateTime, és a visszaadott DateTime használatával állítsa be a dátumtulajdonságot.
  • DateTimeOffset: Hívja meg a konstruktort. A System.DateTime belsőesetén használja a konstruktor szignatúráját. Vagy hozzon létre egy alapértelmezett DateTimeOffset (inicializálva az aktuális dátumra), és hívja meg AddYears.

Egy másik lehetséges módszer egy adatobjektumként vagy adatkörnyezetben elérhető dátum definiálása, majd a dátumtulajdonság beállítása XAML-attribútumként, amely egy {Binding} korrektúrakiterjesztésre hivatkozik,, amely adatként tudja elérni a dátumot.

Megjegyzés:

A dátumértékekkel kapcsolatos fontos információkért tekintse meg a DateTime és a Naptár értékeket a Dátum és idő vezérlőelemek című cikkben.

Ez a példa bemutatja a SelectedDate, MinYearés MaxYear tulajdonságait különböző DatePicker vezérlőelemeken.

<DatePicker x:Name="yearDatePicker" MonthVisible="False" DayVisible="False"/>
<DatePicker x:Name="arrivalDatePicker" Header="Arrival date"/>
public MainPage()
{
    this.InitializeComponent();

    // Set minimum year to 1900 and maximum year to 1999.
    yearDatePicker.SelectedDate = new DateTimeOffset(new DateTime(1950, 1, 1));
    yearDatePicker.MinYear = new DateTimeOffset(new DateTime(1900, 1, 1));
    // Using a different DateTimeOffset constructor.
    yearDatePicker.MaxYear = new DateTimeOffset(1999, 12, 31, 0, 0, 0, new TimeSpan());

    // Set minimum to the current year and maximum to five years from now.
    arrivalDatePicker.MinYear = DateTimeOffset.Now;
    arrivalDatePicker.MaxYear = DateTimeOffset.Now.AddYears(5);
}

Dátumértékek használata

Az alkalmazás dátumértékének használatához általában adatkötést használ a SelectedDate tulajdonsághoz, vagy kezeli a SelectedDateChanged eseményt.

Ha példát szeretne látni arra, hogyan lehet egy DatePicker és TimePicker értéket együtt használni egyetlen DateTime érték frissítésére, tekintse meg a Naptár, dátum és idő vezérlőelemeket – Dátumválasztó és időválasztó együttes használata.

Itt egy DatePicker segítségével választhatja ki a felhasználó érkezési dátumát. Kezeli a SelectedDateChanged eseményt, hogy frissítse a nevű arrivalDateTime példányt.

<StackPanel>
    <DatePicker x:Name="arrivalDatePicker" Header="Arrival date"
                DayFormat="{}{day.integer} ({dayofweek.abbreviated})"
                SelectedDateChanged="arrivalDatePicker_SelectedDateChanged"/>
    <Button Content="Clear" Click="ClearDateButton_Click"/>
    <TextBlock x:Name="arrivalText" Margin="0,12"/>
</StackPanel>
public sealed partial class MainPage : Page
{
    DateTime arrivalDateTime;

    public MainPage()
    {
        this.InitializeComponent();

        // Set minimum to the current year and maximum to five years from now.
        arrivalDatePicker.MinYear = DateTimeOffset.Now;
        arrivalDatePicker.MaxYear = DateTimeOffset.Now.AddYears(5);
    }

    private void arrivalDatePicker_SelectedDateChanged(DatePicker sender, DatePickerSelectedValueChangedEventArgs args)
    {
        if (arrivalDatePicker.SelectedDate != null)
        {
            arrivalDateTime = new DateTime(args.NewDate.Value.Year, args.NewDate.Value.Month, args.NewDate.Value.Day);
        }
        arrivalText.Text = arrivalDateTime.ToString();
    }

    private void ClearDateButton_Click(object sender, RoutedEventArgs e)
    {
        arrivalDatePicker.SelectedDate = null;
        arrivalText.Text = string.Empty;
    }
}