Skip to content

Commit 33b545f

Browse files
authored
Improve CalendarView layout performance (#196)
Just a small layout optimisation.
2 parents e6ca999 + af36a3b commit 33b545f

File tree

2 files changed

+27
-12
lines changed

2 files changed

+27
-12
lines changed

XCalendar.Forms/Views/CalendarView.xaml

+13-6
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,21 @@
99
x:Name="CalendarView_Unique"
1010
x:DataType="{x:Type xc:CalendarView}">
1111

12-
<StackLayout Spacing="0">
13-
<StackLayout.Resources>
14-
<System:Boolean x:Key="FalseValue">False</System:Boolean>
12+
<Grid>
13+
<Grid.RowDefinitions>
14+
<RowDefinition Height="Auto"/>
15+
<RowDefinition Height="Auto"/>
16+
<RowDefinition Height="*"/>
17+
</Grid.RowDefinitions>
1518

19+
<Grid.Resources>
20+
<System:Boolean x:Key="FalseValue">False</System:Boolean>
1621
<Converters:IsNullOrEmptyConverter x:Key="IsNullOrEmptyConverter"/>
1722
<Converters:LocalizeDayOfWeekAndCharLimitConverter x:Key="LocalizeDayOfWeekAndCharLimitConverter"/>
18-
</StackLayout.Resources>
23+
</Grid.Resources>
1924

2025
<xc:NavigationView
26+
Grid.Row="0"
2127
ControlTemplate="{Binding NavigationViewTemplate, Source={x:Reference CalendarView_Unique}}"
2228
DateTime="{Binding NavigatedDate, Source={x:Reference CalendarView_Unique}}"
2329
LeftArrowCommand="{Binding LeftArrowCommand, Source={x:Reference CalendarView_Unique}}"
@@ -26,7 +32,7 @@
2632
RightArrowCommandParameter="{Binding RightArrowCommandParameter, Source={x:Reference CalendarView_Unique}}"/>
2733

2834
<!--#region DayNames-->
29-
<ContentView ControlTemplate="{Binding DayNamesTemplate, Source={x:Reference CalendarView_Unique}}">
35+
<ContentView Grid.Row="1" ControlTemplate="{Binding DayNamesTemplate, Source={x:Reference CalendarView_Unique}}">
3036
<CollectionView
3137
x:Name="MainDaysOfWeekView"
3238
Margin="0,5,0,0"
@@ -71,11 +77,12 @@
7177

7278
<xc:DaysView
7379
x:Name="MainDaysView"
80+
Grid.Row="2"
7481
ControlTemplate="{Binding DaysViewTemplate, Source={x:Reference CalendarView_Unique}}"
7582
DayTemplate="{Binding DayTemplate, Source={x:Reference CalendarView_Unique}}"
7683
DaysOfWeek="{Binding DaysOfWeek, Source={x:Reference CalendarView_Unique}}"
7784
HeightRequest="{Binding DaysViewHeightRequest, Source={x:Reference CalendarView_Unique}}"/>
7885

79-
</StackLayout>
86+
</Grid>
8087

8188
</ContentView>

XCalendar.Maui/Views/CalendarView.xaml

+14-6
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,22 @@
1111
x:Name="CalendarView_Unique"
1212
x:DataType="{x:Type xc:CalendarView}">
1313

14-
<VerticalStackLayout Spacing="0">
15-
<VerticalStackLayout.Resources>
16-
<System:Boolean x:Key="FalseValue">False</System:Boolean>
1714

15+
<Grid>
16+
<Grid.RowDefinitions>
17+
<RowDefinition Height="Auto"/>
18+
<RowDefinition Height="Auto"/>
19+
<RowDefinition Height="*"/>
20+
</Grid.RowDefinitions>
21+
22+
<Grid.Resources>
23+
<System:Boolean x:Key="FalseValue">False</System:Boolean>
1824
<Converters:IsNullOrEmptyConverter x:Key="IsNullOrEmptyConverter"/>
1925
<Converters:LocalizeDayOfWeekAndCharLimitConverter x:Key="LocalizeDayOfWeekAndCharLimitConverter"/>
20-
</VerticalStackLayout.Resources>
26+
</Grid.Resources>
2127

2228
<xc:NavigationView
29+
Grid.Row="0"
2330
ControlTemplate="{Binding NavigationViewTemplate, Source={x:Reference CalendarView_Unique}}"
2431
DateTime="{Binding NavigatedDate, Source={x:Reference CalendarView_Unique}}"
2532
LeftArrowCommand="{Binding LeftArrowCommand, Source={x:Reference CalendarView_Unique}}"
@@ -28,7 +35,7 @@
2835
RightArrowCommandParameter="{Binding RightArrowCommandParameter, Source={x:Reference CalendarView_Unique}}"/>
2936

3037
<!--#region DayNames-->
31-
<ContentView ControlTemplate="{Binding DayNamesTemplate, Source={x:Reference CalendarView_Unique}}">
38+
<ContentView Grid.Row="1" ControlTemplate="{Binding DayNamesTemplate, Source={x:Reference CalendarView_Unique}}">
3239
<CollectionView
3340
x:Name="MainDaysOfWeekView"
3441
Margin="0,5,0,0"
@@ -74,11 +81,12 @@
7481

7582
<xc:DaysView
7683
x:Name="MainDaysView"
84+
Grid.Row="2"
7785
ControlTemplate="{Binding DaysViewTemplate, Source={x:Reference CalendarView_Unique}}"
7886
DayTemplate="{Binding DayTemplate, Source={x:Reference CalendarView_Unique}}"
7987
DaysOfWeek="{Binding DaysOfWeek, Source={x:Reference CalendarView_Unique}}"
8088
HeightRequest="{Binding DaysViewHeightRequest, Source={x:Reference CalendarView_Unique}}"/>
8189

82-
</VerticalStackLayout>
90+
</Grid>
8391

8492
</ContentView>

0 commit comments

Comments
 (0)