How do I create a UI dashboard For School App? Xamarin Forms makes it easy to create an app that can target Android, iOS, and Windows.

How do I create a UI dashboard?
How do I create a UI dashboard?

Please, support my blog by clicking on our sponsors ad!

There are also available for another design for School APP. Links are as follow:
  • https://xamarinuidesigns.blogspot.com/2022/03/school-ui-design-using-xamarin-form.html
  • https://xamarinuidesigns.blogspot.com/2022/03/school-ui-design-fees-gallery-profile.html
  • https://xamarinuidesigns.blogspot.com/2022/03/school-ui-design-using-xamarin-form_10.html
  • https://xamarinuidesigns.blogspot.com/2022/03/school-ui-design-using-xamarin-form_4.html
Fontawesome:
https://xamarinuidesigns.blogspot.com/2022/02/create-font-awesome-icon-in-xamarin-form.html 

Please watch this video to understand code.

First we will create Template.

ImageButton.xaml

<ContentView xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="SchoolUIDesigns.Control.ImageButton">
  <ContentView.Content>
        <Grid RowDefinitions="25,Auto" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
            <Label x:Name="lblIcon" Grid.Row="0"  HorizontalOptions="Center" TextColor="#08457E" 
                   FontFamily="{StaticResource FontAwesomeSolid}" FontSize="20"  ></Label>
            <Label x:Name="lblText" Grid.Row="1" HorizontalOptions="Center" VerticalOptions="Start"  
                   TextColor="#202020"></Label>
        </Grid>
    </ContentView.Content>
</ContentView>

ImageButton.xaml.cs

    public partial class ImageButton : ContentView
    {
        public event EventHandler Clicked;

        public ImageButton()
        {
            InitializeComponent();
            TapGestureRecognizer tap = new TapGestureRecognizer();
            tap.Command = new Command(OnClicked);
            GestureRecognizers.Add(tap);
        }

        public void OnClicked(object sender)
        {
            if (Clicked != null)
            {
                this.Clicked(this, EventArgs.Empty);
            }
        }
        public string Icon
        {
            get
            {
                return lblIcon.Text;
            }
            set
            {
                lblIcon.Text = value;
            }
        }

        public string Text
        {
            get
            {
                return lblText.Text;
            }
            set
            {
                lblText.Text = value;
            }
        }
    }

BannerTemplate.xaml

<ContentView xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="SchoolUIDesigns.Views.Design.Template.BannerTemplate">
  <ContentView.Content>
        <StackLayout  HorizontalOptions="FillAndExpand">
                <Image Source="{Binding URL}" VerticalOptions="FillAndExpand" HeightRequest="110" HorizontalOptions="FillAndExpand" Aspect="Fill"></Image>
        </StackLayout>
    </ContentView.Content>
</ContentView>

Now create a dashboard class to show banner

DashboardViewModel.cs

    public class DashboardViewModel
    {
        public string URL { get; set; }
    }

    public class DashboardModel
    {
        public List<DashboardViewModel> GetBannerList()
        {
            List<DashboardViewModel> list = new List<DashboardViewModel>();
            list.Add(new DashboardViewModel { URL = "https://as1.ftcdn.net/v2/jpg/04/29/93/28/1000_F_429932887_ZSdOvhqNb1bhDa7twCKRySQ1hvVtMSsl.jpg" });
            list.Add(new DashboardViewModel { URL = "https://as1.ftcdn.net/v2/jpg/04/24/51/46/1000_F_424514620_iiZHVadYjpe4k3PQg8qhixUXOuAP5MEd.jpg" });
            list.Add(new DashboardViewModel { URL = "https://media.istockphoto.com/vectors/online-school-digital-internet-tutorials-and-courses-online-education-vector-id1218933779" });
            return list;
        }
    }

Create a main form - Dashboard.xaml

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="SchoolUIDesigns.Views.Design.Dashboard1"
              xmlns:fontawesome="clr-namespace:SchoolUIDesigns.Utility" 
             xmlns:control="clr-namespace:SchoolUIDesigns.Control" 
             xmlns:template="clr-namespace:SchoolUIDesigns.Views.Design.Template"
             Title="Dashboard"
             BackgroundColor="#F0F3FB"
             Shell.NavBarIsVisible="False">
    <ContentPage.Content>
        <Grid RowDefinitions="Auto,Auto,Auto,Auto,Auto" >

            <Frame BackgroundColor="White" CornerRadius="20" Margin="0,-10,0,0" HeightRequest="60" Grid.Row="0">
                <Grid ColumnDefinitions="*,Auto,Auto,Auto,Auto" VerticalOptions="CenterAndExpand">
                    <Label Grid.Column="0" Grid.Row="0" Text="Primary School" FontAttributes="Bold" FontSize="16" TextColor="#08457E"  ></Label>
                    <Label Grid.Column="1" Grid.Row="0" TextColor="#08457E" 
                   FontFamily="{StaticResource FontAwesomeSolid}" Text="{x:Static fontawesome:Solid.Business_Time}" FontSize="20"  ></Label>
                    <Label Grid.Column="2" Grid.Row="0" Text="Time Table" TextColor="Gray"  ></Label>
                    <Label Grid.Column="3" Grid.Row="0" TextColor="#08457E" 
                   FontFamily="{StaticResource FontAwesomeSolid}" Text="{x:Static fontawesome:Solid.Clipboard}" FontSize="20"  ></Label>
                    <Label Grid.Column="4" Grid.Row="0" Text="H.W." TextColor="Gray"  ></Label>
                </Grid>
            </Frame>

                <Frame CornerRadius="10" Grid.Row="1" BackgroundColor="White" Margin="10,10,10,0">
                    <Grid RowDefinitions="Auto,Auto,Auto" ColumnDefinitions="Auto,*" RowSpacing="10">
                    <Label Grid.Row="0" Grid.Column="0" TextColor="#08457E"  FontFamily="{StaticResource FontAwesomeSolid}" Text="{x:Static fontawesome:Solid.User}" FontSize="20"  ></Label>
                    <Label Grid.Row="0" Grid.Column="1" Text="Xamarin UI Design" TextColor="#202020"></Label>
                    <Label Grid.Row="1" Grid.Column="0" TextColor="#08457E"  FontFamily="{StaticResource FontAwesomeSolid}" Text="{x:Static fontawesome:Solid.Table}" FontSize="20"  ></Label>
                    <Label Grid.Row="1" Grid.Column="1" Text="Class: V" TextColor="#202020"></Label>
                    <Label Grid.Row="2" Grid.Column="0" TextColor="#08457E"  FontFamily="{StaticResource FontAwesomeSolid}" Text="{x:Static fontawesome:Solid.User_Edit}" FontSize="20"  ></Label>
                    <Label Grid.Row="2" Grid.Column="1" Text="Class Tearcher: Monali Kundre" TextColor="#202020"></Label>
                </Grid>
                </Frame>

            <Grid Margin="10" Grid.Row="2" RowDefinitions="Auto,Auto" ColumnDefinitions="*,*,*" RowSpacing="10" ColumnSpacing="10">
                <Frame Grid.Row="0" Grid.Column="0" BackgroundColor="White" HasShadow="True" CornerRadius="10">
                    <control:ImageButton  Text="Syllabus" Margin="10" Icon="{x:Static fontawesome:Solid.Table}"/>
                </Frame>
                <Frame Grid.Row="0" Grid.Column="1" BackgroundColor="White" HasShadow="True" CornerRadius="10">
                    <control:ImageButton  Text="Test" Margin="10" Icon="{x:Static fontawesome:Solid.Th_List}"/>
                </Frame>
                <Frame Grid.Row="0" Grid.Column="2" BackgroundColor="White" HasShadow="True" CornerRadius="10">
                    <control:ImageButton  Text="Notice" Margin="10" Icon="{x:Static fontawesome:Solid.Edit}"/>
                </Frame>

                <Frame Grid.Row="1" Grid.Column="0" BackgroundColor="White" HasShadow="True" CornerRadius="10">
                    <control:ImageButton  Text="Fees" Margin="10" Icon="{x:Static fontawesome:Solid.Pallet}"/>
                </Frame>
                <Frame Grid.Row="1" Grid.Column="1" BackgroundColor="White" HasShadow="True" CornerRadius="10">
                    <control:ImageButton  Text="Gallery" Margin="10" Icon="{x:Static fontawesome:Solid.Boxes}"/>
                </Frame>
                <Frame Grid.Row="1" Grid.Column="2" BackgroundColor="White" HasShadow="True" CornerRadius="10">
                    <control:ImageButton  Text="Profile" Margin="10" Icon="{x:Static fontawesome:Solid.Money_Bill}"/>
                </Frame>
            </Grid>
            <Frame Grid.Row="3" Margin="10" CornerRadius="20" >
                <CarouselView x:Name="cvBanner" Margin="-20" HeightRequest="120" Grid.Row="1" VerticalOptions="StartAndExpand" HorizontalOptions="FillAndExpand">
                    <CarouselView.ItemsLayout>
                        <LinearItemsLayout  Orientation="Horizontal"></LinearItemsLayout>
                    </CarouselView.ItemsLayout>
                    <CarouselView.ItemTemplate>
                        <DataTemplate>
                            <template:BannerTemplate/>
                        </DataTemplate>
                    </CarouselView.ItemTemplate>
                </CarouselView>
            </Frame>
            <Frame Grid.Row="4" Margin="10" CornerRadius="10" BackgroundColor="#08457E">
                <Grid RowDefinitions="Auto,Auto,Auto" ColumnDefinitions="*,Auto" RowSpacing="10">
                    <Label Grid.Row="0" Grid.Column="0" Text="Learned Phase" TextColor="#ffffff"></Label>
                    <Label Grid.Row="0" Grid.Column="1" Text="12" FontAttributes="Bold" TextColor="#ffffff"></Label>
                    <Label Grid.Row="1" Grid.Column="0" Text="Phase left to learn" TextColor="#ffffff"></Label>
                    <Label Grid.Row="1" Grid.Column="1" Text="36" FontAttributes="Bold" TextColor="#ffffff"></Label>
                    <Label Grid.Row="2" Grid.Column="0" Text="Total Learning Time" TextColor="#ffffff"></Label>
                    <Label Grid.Row="2" Grid.Column="1" Text="1.5h" FontAttributes="Bold" TextColor="#ffffff"></Label>
                </Grid>
            </Frame>
        </Grid>
    </ContentPage.Content>
</ContentPage>

Dashboard.xaml.cs

        public Dashboard1()
        {
            InitializeComponent();
            var list = new DashboardModel().GetBannerList();
            cvBanner.ItemsSource = list;
            Device.StartTimer(TimeSpan.FromSeconds(5), (Func<bool>)(() =>
            {

                cvBanner.Position = (cvBanner.Position + 1) % list.Count;

                return true;
            }));
        }

Please watch this video to understand code.

Hope you like this video, Please share your feedback in comment section.

Comments

Popular posts from this blog

Explore the UI libraries available for .NET MAUI at no cost.

Push Notification using Firebase in xamarin form (Android and IOS)

School UI Design using xamarin form