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); } }