Skip to content

Commit e1f1f04

Browse files
author
Stéphane ANDRE (E104915)
committed
fix: Switch to OptimizedObservableCollection for performance
Updated CalendarBase.cs to use OptimizedObservableCollection for `_columnHeaders`, `_rowHeaders`, and `_displayDates`. Imported `MyNet.Utilities.Collections`. Changed base class in BlackoutDatesCollection.cs to `OptimizedObservableCollection<DateRange>`. Imported `MyNet.Utilities.Collections`. Changed base class in SelectedDatesCollection.cs to `OptimizedObservableCollection<DateTime>`. Imported `MyNet.Utilities.Collections`. Updated MyNet.Wpf.csproj to reference newer versions of `MyNet.Observable`, `MyNet.UI`, and `MyNet.Utilities` packages.
1 parent 5a0a436 commit e1f1f04

File tree

4 files changed

+11
-10
lines changed

4 files changed

+11
-10
lines changed

src/MyNet.Wpf/Controls/CalendarBase.cs

+4-3
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
using MyNet.UI.Busy.Models;
2929
using MyNet.UI.Collections;
3030
using MyNet.Utilities;
31+
using MyNet.Utilities.Collections;
3132
using MyNet.Utilities.DateTimes;
3233
using MyNet.Utilities.Helpers;
3334
using MyNet.Utilities.Localization;
@@ -69,9 +70,9 @@ public abstract class CalendarBase : ListBox
6970
private DateTime? _currentDate;
7071
private ContentControl? _accurateDateControl;
7172
private ContentControl? _accurateDatePreviewControl;
72-
private readonly ObservableCollection<object> _columnHeaders = [];
73-
private readonly ObservableCollection<object> _rowHeaders = [];
74-
private readonly UiObservableCollection<CalendarItem> _displayDates = [];
73+
private readonly OptimizedObservableCollection<object> _columnHeaders = [];
74+
private readonly OptimizedObservableCollection<object> _rowHeaders = [];
75+
private readonly OptimizedObservableCollection<CalendarItem> _displayDates = [];
7576
private readonly UiObservableCollection<CalendarAppointment> _appointments = [];
7677
private readonly SingleTaskDeferrer _refreshAppointments;
7778
private readonly SingleTaskDeferrer _build;

src/MyNet.Wpf/Controls/Calendars/BlackoutDatesCollection.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@
22
// See the LICENSE file in the project root for more information.
33

44
using System;
5-
using System.Collections.ObjectModel;
65
using System.ComponentModel;
76
using System.Diagnostics;
87
using System.Linq;
9-
using System.Reflection.Metadata.Ecma335;
108
using System.Threading;
119
using MyNet.Utilities;
10+
using MyNet.Utilities.Collections;
1211
using PropertyChanged;
1312

1413
namespace MyNet.Wpf.Controls.Calendars
@@ -17,7 +16,7 @@ namespace MyNet.Wpf.Controls.Calendars
1716
/// Initializes a new instance of the SchedulerBlackoutDatesCollection class.
1817
/// </summary>
1918
/// <param name="owner"></param>
20-
public class BlackoutDatesCollection(CalendarBase owner) : ObservableCollection<DateRange>
19+
public class BlackoutDatesCollection(CalendarBase owner) : OptimizedObservableCollection<DateRange>
2120
{
2221
#region Data
2322

src/MyNet.Wpf/Controls/Calendars/SelectedDatesCollection.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using System.Linq;
1010
using System.Threading;
1111
using System.Windows.Controls;
12+
using MyNet.Utilities.Collections;
1213

1314
namespace MyNet.Wpf.Controls.Calendars
1415
{
@@ -19,7 +20,7 @@ namespace MyNet.Wpf.Controls.Calendars
1920
/// Initializes a new instance of the SchedulerSelectedDatesCollection class.
2021
/// </remarks>
2122
/// <param name="owner"></param>
22-
public sealed class SelectedDatesCollection(CalendarBase owner) : ObservableCollection<DateTime>
23+
public sealed class SelectedDatesCollection(CalendarBase owner) : OptimizedObservableCollection<DateTime>
2324
{
2425
#region Data
2526

src/MyNet.Wpf/MyNet.Wpf.csproj

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
<PackageReference Include="MahApps.Metro" Version="3.0.0-alpha0492" />
1212
<PackageReference Include="MaterialDesignThemes" Version="5.1.1-ci780" />
1313
<PackageReference Include="MyNet.Humanizer" Version="2.0.0" />
14-
<PackageReference Include="MyNet.Observable" Version="6.0.1-pre.6" />
15-
<PackageReference Include="MyNet.UI" Version="5.0.1-pre.4" />
16-
<PackageReference Include="MyNet.Utilities" Version="5.2.1-pre.4" />
14+
<PackageReference Include="MyNet.Observable" Version="6.0.1-pre.7" />
15+
<PackageReference Include="MyNet.UI" Version="5.0.1-pre.5" />
16+
<PackageReference Include="MyNet.Utilities" Version="5.2.1-pre.6" />
1717
<PackageReference Include="MyNet.Xaml.Html" Version="1.0.0" />
1818
<PackageReference Include="MyNet.Xaml.Merger.MSBuild" Version="2.0.1">
1919
<PrivateAssets>all</PrivateAssets>

0 commit comments

Comments
 (0)