Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A naptárnézetekkel a felhasználók megtekinthetik és kezelhetik azokat a naptárakat, amelyeket hónap, év vagy évtized szerint navigálhatnak. A felhasználók egyetlen dátumot vagy dátumtartományt választhatnak. Nincs választófelület, és a naptár mindig látható.
Ez a megfelelő vezérlő?
Naptárnézet használatával a felhasználók egyetlen dátumot vagy dátumtartományt választhatnak ki egy mindig látható naptárból.
Ha egy felhasználónak egyszerre több dátumot kell kijelölnie, naptárnézetet kell használnia. Ha azt szeretné, hogy a felhasználó csak egyetlen dátumot válasszon, és nincs szüksége naptárra, hogy mindig látható legyen, érdemes lehet naptárdátumválasztót vagy dátumválasztó vezérlőelemet használnia.
A megfelelő vezérlőelem kiválasztásáról további információt a Dátum- és idővezérlők című cikkben talál.
Példák
A naptárnézet 3 különálló nézetből áll: a hónap nézetből, az évnézetből és az évtized nézetből. Alapértelmezés szerint a hónap nézet megnyitásakor kezdődik. Az indítási nézetet a DisplayMode tulajdonság beállításával adhatja meg.
A felhasználók a hónap nézetben a fejlécre kattintva nyithatják meg az év nézetet, az év nézetben pedig az élőfejre kattintva nyithatják meg az évtized nézetet. A felhasználók az évtized nézetben kiválasztanak egy évet, hogy visszatérjenek az év nézethez, és az év nézetben válasszon egy hónapot a hónap nézethez való visszatéréshez. A fejléc oldalára mutató két nyíl hónap, év vagy évtized szerint halad előre vagy hátra.
Naptárnézet létrehozása
- Fontos API-k:CalendarView osztály, SelectedDatesChanged esemény
![]()
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ű naptárnézetet.
<CalendarView/>
Az eredményként kapott naptárnézet a következőképpen néz ki:
Dátumok kiválasztása
Alapértelmezés szerint a SelectionMode tulajdonság egyetlen értékre van állítva. Ez lehetővé teszi, hogy a felhasználó egyetlen dátumot válasszon a naptárban. A kijelölés letiltásához állítsa a SelectionMode értéket Nincs értékre.
Állítsa be a SelectionMode-ot "Többszörös
calendarView1.SelectedDates.Add(DateTimeOffset.Now);
calendarView1.SelectedDates.Add(new DateTime(1977, 1, 5));
A felhasználók a naptárrácson kattintással vagy koppintással törölhetik a kijelölt dátum kijelölését.
Kezelheti a SelectedDatesChanged eseményt , hogy értesítést kapjon a SelectedDates gyűjtemény módosításakor.
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.
A naptárnézet megjelenésének testreszabása
A naptárnézet a ControlTemplate-ban definiált XAML-elemekből és a vezérlő által közvetlenül renderelt vizuális elemekből áll.
- A vezérlősablonban definiált XAML-elemek tartalmazzák a vezérlőt, a fejlécet, az előző és a következő gombokat, valamint a DayOfWeek elemeket tartalmazó szegélyt. Ezeket az elemeket bármilyen XAML-vezérlőhez hasonlóan formázhatja és újrasablonolhatja.
- A naptárrácsot a CalendarViewDayItem objektumok alkotják. Ezeket az elemeket nem lehet stílusra vagy újrasablonozásra használni, de a különböző tulajdonságok lehetővé teszik a megjelenésük testreszabását.
Ez az ábra a naptár havi nézetét alkotó elemeket mutatja be. További információ: Megjegyzések a CalendarViewDayItem osztályban.
Ez a táblázat felsorolja a naptárelemek megjelenésének módosításához módosítható tulajdonságokat.
Alapértelmezés szerint a havi nézet egyszerre 6 hetet jelenít meg. A Hetek száma a NumberOfWeeksInView tulajdonság beállításával módosítható. A megjelenítendő hetek minimális száma 2; a maximális érték 8.
Alapértelmezés szerint az év- és évtizednézetek egy 4x4-es rácsban jelennek meg. A sorok vagy oszlopok számának módosításához hívja meg a SetYearDecadeDisplayDimensions függvényt a kívánt sorok és oszlopok számával. Ez az év- és évtizednézetek rácsát is megváltoztatja.
Itt az év- és évtizednézetek egy 3x4-es rácsban jelennek meg.
calendarView1.SetYearDecadeDisplayDimensions(3, 4);
Alapértelmezés szerint a naptárnézetben látható minimális dátum az aktuális dátum előtt 100 év, a megjelenített maximális dátum pedig 100 évvel korábbi az aktuális dátumon. A naptár minimális és maximális dátumait a MinDate és a MaxDate tulajdonságok beállításával módosíthatja .
calendarView1.MinDate = new DateTime(2000, 1, 1);
calendarView1.MaxDate = new DateTime(2099, 12, 31);
Naptári nap elemeinek frissítése
A naptár minden napját egy CalendarViewDayItem objektum jelöli. Az egyes napidők eléréséhez és tulajdonságainak és metódusainak használatához kezelje a CalendarViewDayItemChanging eseményt, és használja az esemény argumentumainak Elem tulajdonságát a CalendarViewDayItem eléréséhez.
A Naptár nézetben egy nap nem választható ki, ha a CalendarViewDayItem.IsBlackout tulajdonságot igazra állítja.
A CalendarViewDayItem.SetDensityColors metódus meghívásával környezeti információkat jeleníthet meg az események sűrűségéről egy napban. Minden nap 0–10 sűrűségsávot jeleníthet meg, és beállíthatja az egyes sávok színét.
Íme néhány napi elem a naptárban. Az 1. és a 2. nap elsötétült. A 2., 3. és 4. nap különböző sűrűségsávokkal rendelkezik.
Fázisos renderelés
A naptárnézetek számos CalendarViewDayItem objektumot tartalmazhatnak. A felhasználói felület rugalmasan kezelhető és zökkenőmentes navigálást biztosít a naptárban, a naptárnézet támogatja a szakaszos megjelenítést. Ez lehetővé teszi, hogy egy napi feladat feldolgozását fázisokra bontsa. Ha egy nap elmozdul a nézetből, mielőtt az összes fázis befejeződik, a rendszer nem használ több időt az elem feldolgozására és megjelenítésére.
Ez a példa egy naptárnézet szakaszos megjelenítését mutatja be a találkozók ütemezéséhez.
- A nulladik fázisban az alapértelmezett napi elem jelenik meg.
- Az 1. fázisban megjelöli a nem foglalható dátumokat. Ide tartoznak a korábbi dátumok, a vasárnapok és a már foglalt dátumok.
- A 2. fázisban minden olyan találkozót ellenőriz, amely az adott napra van lefoglalva. Minden megerősített találkozóhoz zöld sűrűségsávot és minden feltételes találkozóhoz kék sűrűségsávot jelenít meg.
A példában szereplő Bookings osztály egy fiktív találkozófoglalási alkalmazásból származik, és nem jelenik meg.
<CalendarView CalendarViewDayItemChanging="CalendarView_CalendarViewDayItemChanging"/>
private void CalendarView_CalendarViewDayItemChanging(CalendarView sender,
CalendarViewDayItemChangingEventArgs args)
{
// Render basic day items.
if (args.Phase == 0)
{
// Register callback for next phase.
args.RegisterUpdateCallback(CalendarView_CalendarViewDayItemChanging);
}
// Set blackout dates.
else if (args.Phase == 1)
{
// Blackout dates in the past, Sundays, and dates that are fully booked.
if (args.Item.Date < DateTimeOffset.Now ||
args.Item.Date.DayOfWeek == DayOfWeek.Sunday ||
Bookings.HasOpenings(args.Item.Date) == false)
{
args.Item.IsBlackout = true;
}
// Register callback for next phase.
args.RegisterUpdateCallback(CalendarView_CalendarViewDayItemChanging);
}
// Set density bars.
else if (args.Phase == 2)
{
// Avoid unnecessary processing.
// You don't need to set bars on past dates or Sundays.
if (args.Item.Date > DateTimeOffset.Now &&
args.Item.Date.DayOfWeek != DayOfWeek.Sunday)
{
// Get bookings for the date being rendered.
var currentBookings = Bookings.GetBookings(args.Item.Date);
List<Color> densityColors = new List<Color>();
// Set a density bar color for each of the days bookings.
// It's assumed that there can't be more than 10 bookings in a day. Otherwise,
// further processing is needed to fit within the max of 10 density bars.
foreach (booking in currentBookings)
{
if (booking.IsConfirmed == true)
{
densityColors.Add(Colors.Green);
}
else
{
densityColors.Add(Colors.Blue);
}
}
args.Item.SetDensityColors(densityColors);
}
}
}
Kapcsolódó cikkek
Windows developer