Entwickler-Ecke
WPF / Silverlight - Calendar Control -> toggle selected dates
Greenberet - So 26.01.14 12:43
Titel: Calendar Control -> toggle selected dates
Guten Morgen,
ich bin jetzt mal wieder seit längeren dabei mich mit WPF zu spielen.
Für eine Zeitsteuerung muss der User in der Lage sein Feiertage einzutragen.
Das mache ich derzeit mit dem standard Calendar Control. SelectionMode ist auf MultipleRanges und das funktioniert auch soweit.
Allerdings muss man hierführ immer die Strg-Taste gedrückt halten. Ansonsten wird bei einem Klick alles vorherige abgewählt und nur das neueste Aktiv.
Wie bekommt man es am einfachsten hin, dass die Daten bei einem Klick getoggled werden?
Christian S. - So 26.01.14 14:11
Hallo!
Ich hatte an sowas gedacht:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| private void mycalendar_SelectedDatesChanged(object sender, SelectionChangedEventArgs e) { if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)) return;
if (e.RemovedItems.Count == 0) return; else { var removedItems = e.RemovedItems.Cast<DateTime>().ToArray(); var addedItems = e.AddedItems.Cast<DateTime>().ToArray(); ;
var removeItems = addedItems.Where(i => removedItems.Contains(i)).ToArray(); mycalendar.SelectedDatesChanged -= mycalendar_SelectedDatesChanged; foreach (var date in removedItems) if (!mycalendar.SelectedDates.Contains(date)) mycalendar.SelectedDates.Add(date);
foreach (var date in removeItems) mycalendar.SelectedDates.Remove(date);
mycalendar.SelectedDatesChanged += mycalendar_SelectedDatesChanged; } } |
Allerdings funktioniert das noch nicht ganz, insbesondere wenn mehrere Daten ausgewählt sind und dann mehrere Daten getoggelt werden sollen. Kompliziert wird es auch, wenn ein paar der neu ausgewählten Daten in der vorherigen Auswahl lagen und ein paar nicht ;-)
Vielleicht kannst Du daraus ja aber irgendwas funktionierendes bauen :)
Viele Grüße
Christian
Greenberet - Mi 29.01.14 01:18
Vielen Dank schonmal =)
von der Programmlokig ist es eig jetzt genau so wie ich es wollte.
das einzige Problem ist, dass während man mehrere Tage selektiert, die bestehenden nicht angezeigt werden. Sobald man aufhört sind die neuen und alten Werte wieder sichtbar.(sofern diese nicht gelöscht wurden)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!