Xamarin Shell Basics
Xamarin.Forms Shell provides a unified way for developers to build user interfaces and application navigation that can run on iOS, Android, and UWP platforms. It's a productivity enhancement that includes default UI templates, navigation, accessibility, and lots more.
Syntax
To use Xamarin Shell, you need to create a shell application and combine elements such as pages and layouts to create a polished user interface. Here is an example of the syntax used to create a shell page:
<Shell>
<TabBar>
<Tab Title="Dashboard" Icon="dashboard.png">
<ShellContent ContentTemplate="{DataTemplate views:DashboardPage}" />
</Tab>
<Tab Title="Search" Icon="search.png">
<ShellContent ContentTemplate="{DataTemplate views:SearchPage}" />
</Tab>
<Tab Title="Settings" Icon="settings.png">
<ShellContent ContentTemplate="{DataTemplate views:SettingsPage}" />
</Tab>
</TabBar>
</Shell>
Example
Here is a simple example of how to create a shell application:
- Open Visual Studio and create a new Xamarin.Forms project using the Shell Content Page template.
- Add a new Content Page to the project.
- In the XAML file of the Content Page, add the following code:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
Title="Home Page"
x:Class="ShellDemo.Views.HomePage">
<StackLayout>
<Label Text="Welcome to Xamarin Shell!"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand" />
</StackLayout>
</ContentPage>
- Open the
AppShell.xaml
file and add the following code:
<Shell>
<FlyoutItem Title="Home" Icon="home.png">
<ShellContent ContentTemplate="{DataTemplate views:HomePage}" />
</FlyoutItem>
</Shell>
- Set the startup page of the application to the AppShell.xaml file in
App.xaml.cs
file.
public App()
{
InitializeComponent();
MainPage = new AppShell();
}
- Run the app.
Output
The output of the above example is a Xamarin Shell application that displays a HomePage
with a welcome message.
Explanation
Xamarin Shell is at its core a renderer for Android and iOS that aims to provide a consistent user interface and navigation experience. Xamarin Shell uses the Model-View-ViewModel (MVVM) architecture to separate the application logic from the user interface. Shell provides a set of UI components such as TabBar
, Flyout
, and Toolbar
that make it easy to create a navigation hierarchy.
In the above example, we defined a HomePage
inside a ContentPage
. We then created a Shell
with a single FlyoutItem
that defines the content for the Shell. The FlyoutItem
defines the title of the item and an icon and includes a ShellContent
object that defines the HomePage
using a DataTemplate.
Use
Xamarin Shell is meant to simplify the process of building common and complex parts of an application, thus making it faster and easier for developers to build the mobile applications. Xamarin Shell provides key features like structure, UI elements, and navigation to make mobile app development faster and more straightforward.
Some benefits of using Xamarin Shell include:
- Provides consistent user interface and navigation experience
- Simplifies page navigation utilizing data driven navigation model
- Offers superior control of page navigation
- Reduces the amount of code required to create standard UI layouts and behaviors
- Compatible with many third-party libraries
Important Points
- Xamarin Shell is a rendering engine for Xamarin.Forms that provides users with a consistent UI and navigation experience.
- With Xamarin Shell, you can develop mobile apps for iOS, Android, and UWP platforms.
- Xamarin Shell simplifies the process of building common and complex parts of an application, thus making it faster and easier for developers to build mobile applications.
- Xamarin Shell simplifies page navigation utilizing data driven navigation model.
- Xamarin Shell provides superior control of page navigation, enabling the creation of UX-packed applications.
Summary
Xamarin Shell is a powerful and easy-to-use tool for building Xamarin.Forms applications that require a polished user interface with navigational elements that are consistent across all platforms. By providing a library of pre-defined UI elements like Toolbar, TabBar, and Flyout, development is streamlined and enables developers to focus more on UX design. Xamarin Shell can be used by developers to build apps for all major platforms with ease using the same codebase.