SideBar
RedCorners.Forms.SideBar
is an extremely customizable control that can work as a side menu in Xamarin.Forms applications. It derives from ContentView2
, making it a completely native Xamarin.Forms View
which can be placed in any element. This gives the developer a level of flexibility that is simply not possible with the regular Master-Detail Pages.
Aside from being embeddable anywhere, developers can freely adjust its size and position on the screen. It can be placed on the right side of the screen, or even open from the top or bottom of the screen. It can occupy the entire screen when it’s presented, a fraction of the screen, or a fixed amount specified by the developer. This size is controlled via its ContentSize
bindable property, which is of type GridLength
, accepting Star
or Auto
values, as well as absolute numbers.
The IsFullSize
property specifies whether the SideBar covers the whole screen when it’s visible, or just a part of the screen. When it is set to true
, ContentSize
is ignored.
Unlike master pages, SideBar
behaves exactly the same across both iOS and Android, where it opens as an overlay view on top of the rest of the page. With a customizable background color, it allows for creating semi-transparent side menus on both platforms.
It supports both sliding and fading animations, and developers can toggle these animations and even adjust the duration of each type of animation separately via the following bindable properties:
bool DoesFadeIn
bool DoesSlideIn
bool DoesFadeOut
bool DoesSlideOut
uint SlideInDuration
uint SlideOutDuration
uint FadeInDuration
uint FadeOutDuration
The visibility of the SideBar
is controlled using its IsVisible
bindable property. When it is toggled, the animations are automatically executed and the control is shown or hidden.
If the IsSwipeEnabled
property is true
, swipe gestures can open or close the SideBar
.
Properties
[ContentProperty] View Body
This property sets the contents of the SideBar
. It can be anything, for example, a Frame
with a StackLayout
:
<rf:SideBar
Side="{Binding Side}"
ContentSize="{Binding ContentSize}"
IsFullSize="{Binding IsFullSize}">
<Frame
HasShadow="True"
HorizontalOptions="Fill"
VerticalOptions="Fill"
BackgroundColor="#CC000000"
Padding="0"
CornerRadius="0">
<ScrollView Padding="{Static rf:Values.PageMargin}">
<StackLayout Padding="10">
<ff:CachedImage Source="http://ooze.redcorners.com/redcorners_forms_logo.png" HorizontalOptions="Center" HeightRequest="128" WidthRequest="128" />
<Label Text="RedCorners.Forms" TextColor="White" FontSize="Large" HorizontalTextAlignment="Center" HorizontalOptions="Center" />
<BoxView HeightRequest="1" HorizontalOptions="Fill" BackgroundColor="White" />
<Button Text="Hide SideBar" Command="{Binding HideSideBarCommand}" />
<Button Text="Left" Command="{Binding PlaceSideBarCommand}" CommandParameter="Left" />
<Button Text="Right" Command="{Binding PlaceSideBarCommand}" CommandParameter="Right" />
<Button Text="Top" Command="{Binding PlaceSideBarCommand}" CommandParameter="Top" />
<Button Text="Bottom" Command="{Binding PlaceSideBarCommand}" CommandParameter="Bottom" />
</StackLayout>
</ScrollView>
</Frame>
</rf:SideBar>
SideBarSides Side
This property indicates which side of the screen the SideBar
is placed at. Valid values are: Left
(default), Right
, Top
and Bottom
.
GridLength ContentSize
This property indicates the width or height of the SideBar
, depending on its Side
value. The property is of type GridLength
, allowing values such as Auto
, *
, 3*
or 200
. It is set to 3*
by default.
Color BackgroundColor
This property assigns the background color of the SideBar
when shown.
bool IsSwipeEnabled
This property toggles responsiveness to swipe gestures for opening and closing the SideBar
. It is true
by default.
bool IsFullSize
This property toggles whether the SideBar
occupies the entire screen or just a part of it. It is false
by default. Enabling this will make the SideBar
ignore its ContentSize
value.
bool IsVisible
This bindable property indicates whether the SideBar
is visible or not. By default, it is bound to the IsSideBarOpen
boolean property of the binding context. In case a BindableModel
is used as a binding context, this boolean is already defined, along with ShowSideBarCommand
and HideSideBarCommand
commands which trigger the value of IsSideBarOpen
.
Animation Properties
These properties toggle different type of animations, as well as adjusting their durations (in milliseconds):
bool DoesFadeIn
bool DoesSlideIn
bool DoesFadeOut
bool DoesSlideOut
uint SlideInDuration
uint SlideOutDuration
uint FadeInDuration
uint FadeOutDuration
By default, all animations are enabled.