Skip to content

Commit

Permalink
Add property "DateTime" to NavigationView
Browse files Browse the repository at this point in the history
This functions like the "DateTime" property in "DayView": There is a default binding for the "Text" property to the "DateTime" property.
  • Loading branch information
ME-MarvinE committed Jan 25, 2024
1 parent a33ee71 commit b3ab785
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 23 deletions.
6 changes: 3 additions & 3 deletions XCalendar.Forms/Views/CalendarView.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@
</StackLayout.Resources>

<xc:NavigationView
ControlTemplate="{Binding NavigationViewTemplate, Source={x:Reference CalendarView_Unique}}"
DateTime="{Binding NavigatedDate, Source={x:Reference CalendarView_Unique}}"
LeftArrowCommand="{Binding LeftArrowCommand, Source={x:Reference CalendarView_Unique}}"
LeftArrowCommandParameter="{Binding LeftArrowCommandParameter, Source={x:Reference CalendarView_Unique}}"
ControlTemplate="{Binding NavigationViewTemplate, Source={x:Reference CalendarView_Unique}}"
RightArrowCommand="{Binding RightArrowCommand, Source={x:Reference CalendarView_Unique}}"
RightArrowCommandParameter="{Binding RightArrowCommandParameter, Source={x:Reference CalendarView_Unique}}"
Text="{Binding NavigatedDate, StringFormat='{0:MMMM yyy}', Source={x:Reference CalendarView_Unique}}"/>
RightArrowCommandParameter="{Binding RightArrowCommandParameter, Source={x:Reference CalendarView_Unique}}"/>

<!--#region DayNames-->
<ContentView ControlTemplate="{Binding DayNamesTemplate, Source={x:Reference CalendarView_Unique}}">
Expand Down
11 changes: 10 additions & 1 deletion XCalendar.Forms/Views/NavigationView.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Windows.Input;
using System;
using System.Windows.Input;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;

Expand All @@ -10,6 +11,11 @@ public partial class NavigationView : ContentView
#region Properties

#region Bindable Properties
public DateTime? DateTime
{
get { return (DateTime?)GetValue(DateTimeProperty); }
set { SetValue(DateTimeProperty, value); }
}
public TextTransform TextTransform
{
get { return (TextTransform)GetValue(TextTransformProperty); }
Expand Down Expand Up @@ -123,6 +129,7 @@ public float ArrowCornerRadius
}

#region Bindable Properties Initialisers
public static readonly BindableProperty DateTimeProperty = BindableProperty.Create(nameof(DateTime), typeof(DateTime?), typeof(DayView), System.DateTime.Today);
public static readonly BindableProperty CharacterSpacingProperty = BindableProperty.Create(nameof(CharacterSpacing), typeof(double), typeof(NavigationView), Label.CharacterSpacingProperty.DefaultValue);
public static readonly BindableProperty FontAttributesProperty = BindableProperty.Create(nameof(FontAttributes), typeof(FontAttributes), typeof(NavigationView), FontAttributes.Bold);
public static readonly BindableProperty FontFamilyProperty = BindableProperty.Create(nameof(FontFamily), typeof(string), typeof(NavigationView), Label.FontFamilyProperty.DefaultValue);
Expand Down Expand Up @@ -154,6 +161,8 @@ public float ArrowCornerRadius
#region Constructors
public NavigationView()
{
SetBinding(TextProperty, new Binding(path: "DateTime", stringFormat: "{0:MMMM yyy}", source: this));

InitializeComponent();
}
#endregion
Expand Down
10 changes: 5 additions & 5 deletions XCalendar.Maui/Views/CalendarView.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,17 @@
<VerticalStackLayout.Resources>
<System:Boolean x:Key="FalseValue">False</System:Boolean>

<Converters:IsNullOrEmptyConverter x:Key="IsNullOrEmptyConverter" />
<Converters:LocalizeDayOfWeekAndCharLimitConverter x:Key="LocalizeDayOfWeekAndCharLimitConverter" />
<Converters:IsNullOrEmptyConverter x:Key="IsNullOrEmptyConverter"/>
<Converters:LocalizeDayOfWeekAndCharLimitConverter x:Key="LocalizeDayOfWeekAndCharLimitConverter"/>
</VerticalStackLayout.Resources>

<xc:NavigationView
ControlTemplate="{Binding NavigationViewTemplate, Source={x:Reference CalendarView_Unique}}"
DateTime="{Binding NavigatedDate, Source={x:Reference CalendarView_Unique}}"
LeftArrowCommand="{Binding LeftArrowCommand, Source={x:Reference CalendarView_Unique}}"
LeftArrowCommandParameter="{Binding LeftArrowCommandParameter, Source={x:Reference CalendarView_Unique}}"
ControlTemplate="{Binding NavigationViewTemplate, Source={x:Reference CalendarView_Unique}}"
RightArrowCommand="{Binding RightArrowCommand, Source={x:Reference CalendarView_Unique}}"
RightArrowCommandParameter="{Binding RightArrowCommandParameter, Source={x:Reference CalendarView_Unique}}"
Text="{Binding NavigatedDate, StringFormat='{0:MMMM yyy}', Source={x:Reference CalendarView_Unique}}"/>
RightArrowCommandParameter="{Binding RightArrowCommandParameter, Source={x:Reference CalendarView_Unique}}"/>

<!--#region DayNames-->
<ContentView ControlTemplate="{Binding DayNamesTemplate, Source={x:Reference CalendarView_Unique}}">
Expand Down
8 changes: 8 additions & 0 deletions XCalendar.Maui/Views/NavigationView.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ public partial class NavigationView : ContentView
#region Properties

#region Bindable Properties
public DateTime? DateTime
{
get { return (DateTime?)GetValue(DateTimeProperty); }
set { SetValue(DateTimeProperty, value); }
}
public TextTransform TextTransform
{
get { return (TextTransform)GetValue(TextTransformProperty); }
Expand Down Expand Up @@ -121,6 +126,7 @@ public float ArrowCornerRadius
}

#region Bindable Properties Initialisers
public static readonly BindableProperty DateTimeProperty = BindableProperty.Create(nameof(DateTime), typeof(DateTime?), typeof(DayView), System.DateTime.Today);
public static readonly BindableProperty CharacterSpacingProperty = BindableProperty.Create(nameof(CharacterSpacing), typeof(double), typeof(NavigationView), Label.CharacterSpacingProperty.DefaultValue);
public static readonly BindableProperty FontAttributesProperty = BindableProperty.Create(nameof(FontAttributes), typeof(FontAttributes), typeof(NavigationView), FontAttributes.Bold);
public static readonly BindableProperty FontFamilyProperty = BindableProperty.Create(nameof(FontFamily), typeof(string), typeof(NavigationView), Label.FontFamilyProperty.DefaultValue);
Expand Down Expand Up @@ -152,6 +158,8 @@ public float ArrowCornerRadius
#region Constructors
public NavigationView()
{
SetBinding(TextProperty, new Binding(path: "DateTime", stringFormat: "{0:MMMM yyy}", source: this));

InitializeComponent();
}
#endregion
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -926,16 +926,16 @@
<xc:CalendarView
x:Name="FancyCalendarView"
BackgroundColor="{Binding CalendarBackgroundColor}"
LeftArrowCommand="{Binding NavigateCalendarCommand}"
LeftArrowCommandParameter="{Binding BackwardsNavigationAmount}"
DayNamesHeightRequest="{Binding DayNamesHeightRequest}"
Days="{Binding Calendar.Days}"
DaysOfWeek="{Binding Calendar.DayNamesOrder}"
DaysViewHeightRequest="{Binding DaysViewHeightRequest}"
RightArrowCommand="{Binding NavigateCalendarCommand}"
RightArrowCommandParameter="{Binding ForwardsNavigationAmount}"
IsVisible="{Binding CalendarIsVisible}"
LeftArrowCommand="{Binding NavigateCalendarCommand}"
LeftArrowCommandParameter="{Binding BackwardsNavigationAmount}"
NavigatedDate="{Binding Calendar.NavigatedDate}"
RightArrowCommand="{Binding NavigateCalendarCommand}"
RightArrowCommandParameter="{Binding ForwardsNavigationAmount}"
Style="{StaticResource DefaultCalendarViewStyle}">

<xc:CalendarView.NavigationViewTemplate>
Expand All @@ -944,14 +944,14 @@
ArrowBackgroundColor="{Binding NavigationArrowBackgroundColor}"
ArrowColor="{Binding NavigationArrowColor}"
BackgroundColor="{Binding NavigationBackgroundColor}"
BindingContext="{Binding BindingContext, Source={RelativeSource TemplatedParent}}"
DateTime="{Binding DateTime, Source={RelativeSource TemplatedParent}}"
HeightRequest="{Binding NavigationHeightRequest}"
LeftArrowCommand="{Binding LeftArrowCommand, Source={x:RelativeSource TemplatedParent}}"
LeftArrowCommandParameter="{Binding LeftArrowCommandParameter, Source={RelativeSource TemplatedParent}}"
BindingContext="{Binding BindingContext, Source={RelativeSource TemplatedParent}}"
RightArrowCommand="{Binding RightArrowCommand, Source={x:RelativeSource TemplatedParent}}"
RightArrowCommandParameter="{Binding RightArrowCommandParameter, Source={RelativeSource TemplatedParent}}"
HeightRequest="{Binding NavigationHeightRequest}"
Style="{StaticResource DefaultNavigationViewStyle}"
Text="{Binding Text, Source={RelativeSource TemplatedParent}}"
TextColor="{Binding NavigationTextColor}"/>
</ControlTemplate>
</xc:CalendarView.NavigationViewTemplate>
Expand Down
14 changes: 7 additions & 7 deletions XCalendarMauiSample/Views/PlaygroundPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -968,16 +968,16 @@
<xc:CalendarView
x:Name="FancyCalendarView"
BackgroundColor="{Binding CalendarBackgroundColor}"
LeftArrowCommand="{Binding NavigateCalendarCommand}"
LeftArrowCommandParameter="{Binding BackwardsNavigationAmount}"
DayNamesHeightRequest="{Binding DayNamesHeightRequest}"
Days="{Binding Calendar.Days}"
DaysOfWeek="{Binding Calendar.DayNamesOrder}"
DaysViewHeightRequest="{Binding DaysViewHeightRequest}"
RightArrowCommand="{Binding NavigateCalendarCommand}"
RightArrowCommandParameter="{Binding ForwardsNavigationAmount}"
IsVisible="{Binding CalendarIsVisible}"
LeftArrowCommand="{Binding NavigateCalendarCommand}"
LeftArrowCommandParameter="{Binding BackwardsNavigationAmount}"
NavigatedDate="{Binding Calendar.NavigatedDate}"
RightArrowCommand="{Binding NavigateCalendarCommand}"
RightArrowCommandParameter="{Binding ForwardsNavigationAmount}"
Style="{StaticResource DefaultCalendarViewStyle}">

<xc:CalendarView.NavigationViewTemplate>
Expand All @@ -986,14 +986,14 @@
ArrowBackgroundColor="{Binding NavigationArrowBackgroundColor}"
ArrowColor="{Binding NavigationArrowColor}"
BackgroundColor="{Binding NavigationBackgroundColor}"
BindingContext="{Binding BindingContext, Source={RelativeSource TemplatedParent}}"
DateTime="{Binding DateTime, Source={RelativeSource TemplatedParent}}"
HeightRequest="{Binding NavigationHeightRequest}"
LeftArrowCommand="{Binding LeftArrowCommand, Source={x:RelativeSource TemplatedParent}}"
LeftArrowCommandParameter="{Binding LeftArrowCommandParameter, Source={RelativeSource TemplatedParent}}"
BindingContext="{Binding BindingContext, Source={RelativeSource TemplatedParent}}"
RightArrowCommand="{Binding RightArrowCommand, Source={x:RelativeSource TemplatedParent}}"
RightArrowCommandParameter="{Binding RightArrowCommandParameter, Source={RelativeSource TemplatedParent}}"
HeightRequest="{Binding NavigationHeightRequest}"
Style="{StaticResource DefaultNavigationViewStyle}"
Text="{Binding Text, Source={RelativeSource TemplatedParent}}"
TextColor="{Binding NavigationTextColor}"/>
</ControlTemplate>
</xc:CalendarView.NavigationViewTemplate>
Expand Down

0 comments on commit b3ab785

Please sign in to comment.