|
|
@@ -7,6 +7,7 @@ using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Diagnostics;
|
|
|
using System.Globalization;
|
|
|
+using Avalonia.Collections.Pooled;
|
|
|
using Avalonia.Controls.Metadata;
|
|
|
using Avalonia.Data;
|
|
|
using Avalonia.Input;
|
|
|
@@ -172,13 +173,13 @@ namespace Avalonia.Controls.Primitives
|
|
|
if (MonthView != null)
|
|
|
{
|
|
|
var childCount = Calendar.RowsPerMonth + Calendar.RowsPerMonth * Calendar.ColumnsPerMonth;
|
|
|
- var children = new List<IControl>(childCount);
|
|
|
+ using var children = new PooledList<IControl>(childCount);
|
|
|
|
|
|
for (int i = 0; i < Calendar.RowsPerMonth; i++)
|
|
|
{
|
|
|
if (_dayTitleTemplate != null)
|
|
|
{
|
|
|
- var cell = _dayTitleTemplate.Build();
|
|
|
+ var cell = (Control) _dayTitleTemplate.Build();
|
|
|
cell.DataContext = string.Empty;
|
|
|
cell.SetValue(Grid.RowProperty, 0);
|
|
|
cell.SetValue(Grid.ColumnProperty, i);
|
|
|
@@ -186,11 +187,16 @@ namespace Avalonia.Controls.Primitives
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ EventHandler<PointerPressedEventArgs> cellMouseLeftButtonDown = Cell_MouseLeftButtonDown;
|
|
|
+ EventHandler<PointerReleasedEventArgs> cellMouseLeftButtonUp = Cell_MouseLeftButtonUp;
|
|
|
+ EventHandler<PointerEventArgs> cellMouseEnter = Cell_MouseEnter;
|
|
|
+ EventHandler<RoutedEventArgs> cellClick = Cell_Click;
|
|
|
+
|
|
|
for (int i = 1; i < Calendar.RowsPerMonth; i++)
|
|
|
{
|
|
|
for (int j = 0; j < Calendar.ColumnsPerMonth; j++)
|
|
|
{
|
|
|
- CalendarDayButton cell = new CalendarDayButton();
|
|
|
+ var cell = new CalendarDayButton();
|
|
|
|
|
|
if (Owner != null)
|
|
|
{
|
|
|
@@ -198,10 +204,10 @@ namespace Avalonia.Controls.Primitives
|
|
|
}
|
|
|
cell.SetValue(Grid.RowProperty, i);
|
|
|
cell.SetValue(Grid.ColumnProperty, j);
|
|
|
- cell.CalendarDayButtonMouseDown += Cell_MouseLeftButtonDown;
|
|
|
- cell.CalendarDayButtonMouseUp += Cell_MouseLeftButtonUp;
|
|
|
- cell.PointerEnter += Cell_MouseEnter;
|
|
|
- cell.Click += Cell_Click;
|
|
|
+ cell.CalendarDayButtonMouseDown += cellMouseLeftButtonDown;
|
|
|
+ cell.CalendarDayButtonMouseUp += cellMouseLeftButtonUp;
|
|
|
+ cell.PointerEnter += cellMouseEnter;
|
|
|
+ cell.Click += cellClick;
|
|
|
children.Add(cell);
|
|
|
}
|
|
|
}
|
|
|
@@ -214,12 +220,15 @@ namespace Avalonia.Controls.Primitives
|
|
|
var childCount = Calendar.RowsPerYear * Calendar.ColumnsPerYear;
|
|
|
var children = new List<IControl>(childCount);
|
|
|
|
|
|
- CalendarButton month;
|
|
|
+ EventHandler<PointerPressedEventArgs> monthCalendarButtonMouseDown = Month_CalendarButtonMouseDown;
|
|
|
+ EventHandler<PointerReleasedEventArgs> monthCalendarButtonMouseUp = Month_CalendarButtonMouseUp;
|
|
|
+ EventHandler<PointerEventArgs> monthMouseEnter = Month_MouseEnter;
|
|
|
+
|
|
|
for (int i = 0; i < Calendar.RowsPerYear; i++)
|
|
|
{
|
|
|
for (int j = 0; j < Calendar.ColumnsPerYear; j++)
|
|
|
{
|
|
|
- month = new CalendarButton();
|
|
|
+ var month = new CalendarButton();
|
|
|
|
|
|
if (Owner != null)
|
|
|
{
|
|
|
@@ -227,9 +236,9 @@ namespace Avalonia.Controls.Primitives
|
|
|
}
|
|
|
month.SetValue(Grid.RowProperty, i);
|
|
|
month.SetValue(Grid.ColumnProperty, j);
|
|
|
- month.CalendarLeftMouseButtonDown += Month_CalendarButtonMouseDown;
|
|
|
- month.CalendarLeftMouseButtonUp += Month_CalendarButtonMouseUp;
|
|
|
- month.PointerEnter += Month_MouseEnter;
|
|
|
+ month.CalendarLeftMouseButtonDown += monthCalendarButtonMouseDown;
|
|
|
+ month.CalendarLeftMouseButtonUp += monthCalendarButtonMouseUp;
|
|
|
+ month.PointerEnter += monthMouseEnter;
|
|
|
children.Add(month);
|
|
|
}
|
|
|
}
|