From 9b1dd5de17042def895980dac3134a00a785c068 Mon Sep 17 00:00:00 2001 From: Dariusz Komosinski Date: Sun, 28 Jul 2019 22:55:51 +0200 Subject: [PATCH] Do not spam with collection changed events. --- src/Avalonia.Controls/Calendar/CalendarItem.cs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Avalonia.Controls/Calendar/CalendarItem.cs b/src/Avalonia.Controls/Calendar/CalendarItem.cs index 8232697c18..395196d926 100644 --- a/src/Avalonia.Controls/Calendar/CalendarItem.cs +++ b/src/Avalonia.Controls/Calendar/CalendarItem.cs @@ -4,6 +4,7 @@ // All other rights reserved. using System; +using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using Avalonia.Data; @@ -193,6 +194,9 @@ namespace Avalonia.Controls.Primitives { if (MonthView != null) { + var childCount = Calendar.RowsPerMonth + Calendar.RowsPerMonth * Calendar.ColumnsPerMonth; + var children = new List(childCount); + for (int i = 0; i < Calendar.RowsPerMonth; i++) { if (_dayTitleTemplate != null) @@ -201,7 +205,7 @@ namespace Avalonia.Controls.Primitives cell.DataContext = string.Empty; cell.SetValue(Grid.RowProperty, 0); cell.SetValue(Grid.ColumnProperty, i); - MonthView.Children.Add(cell); + children.Add(cell); } } @@ -222,13 +226,18 @@ namespace Avalonia.Controls.Primitives cell.PointerEnter += Cell_MouseEnter; cell.PointerLeave += Cell_MouseLeave; cell.Click += Cell_Click; - MonthView.Children.Add(cell); + children.Add(cell); } } + + MonthView.Children.AddRange(children); } if (YearView != null) { + var childCount = Calendar.RowsPerYear * Calendar.ColumnsPerYear; + var children = new List(childCount); + CalendarButton month; for (int i = 0; i < Calendar.RowsPerYear; i++) { @@ -246,9 +255,11 @@ namespace Avalonia.Controls.Primitives month.CalendarLeftMouseButtonUp += Month_CalendarButtonMouseUp; month.PointerEnter += Month_MouseEnter; month.PointerLeave += Month_MouseLeave; - YearView.Children.Add(month); + children.Add(month); } } + + YearView.Children.AddRange(children); } }