flyout page

main
syneffort 2 years ago
parent cd50b20538
commit c471379d44
  1. 4
      XamarinStudy/XamarinStudy/XamarinStudy/App.xaml.cs
  2. 16
      XamarinStudy/XamarinStudy/XamarinStudy/Views/SampleFlyoutPage.xaml
  3. 36
      XamarinStudy/XamarinStudy/XamarinStudy/Views/SampleFlyoutPage.xaml.cs
  4. 16
      XamarinStudy/XamarinStudy/XamarinStudy/Views/SampleFlyoutPage2.cs
  5. 9
      XamarinStudy/XamarinStudy/XamarinStudy/Views/SampleFlyoutPageDetail.xaml
  6. 20
      XamarinStudy/XamarinStudy/XamarinStudy/Views/SampleFlyoutPageDetail.xaml.cs
  7. 45
      XamarinStudy/XamarinStudy/XamarinStudy/Views/SampleFlyoutPageFlyout.xaml
  8. 56
      XamarinStudy/XamarinStudy/XamarinStudy/Views/SampleFlyoutPageFlyout.xaml.cs
  9. 20
      XamarinStudy/XamarinStudy/XamarinStudy/Views/SampleFlyoutPageFlyoutMenuItem.cs
  10. 9
      XamarinStudy/XamarinStudy/XamarinStudy/XamarinStudy.csproj

@ -22,7 +22,9 @@ namespace XamarinStudy
//tabbed.Children.Add(new SampleContentPage() { Title = "Page1" }); //tabbed.Children.Add(new SampleContentPage() { Title = "Page1" });
//tabbed.Children.Add(new SampleToolbarPage() { Title = "Page2" }); //tabbed.Children.Add(new SampleToolbarPage() { Title = "Page2" });
//MainPage = tabbed; //MainPage = tabbed;
MainPage = new SampleCarouselPage(); //MainPage = new SampleCarouselPage();
//MainPage = new SampleFlyoutPage();
MainPage = new SampleFlyoutPage2();
} }
protected override void OnStart() protected override void OnStart()

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?>
<FlyoutPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="XamarinStudy.Views.SampleFlyoutPage"
xmlns:pages="clr-namespace:XamarinStudy.Views">
<FlyoutPage.Flyout>
<pages:SampleFlyoutPageFlyout x:Name="FlyoutPage" />
</FlyoutPage.Flyout>
<FlyoutPage.Detail>
<NavigationPage>
<x:Arguments>
<pages:SampleFlyoutPageDetail />
</x:Arguments>
</NavigationPage>
</FlyoutPage.Detail>
</FlyoutPage>

@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace XamarinStudy.Views
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class SampleFlyoutPage : FlyoutPage
{
public SampleFlyoutPage()
{
InitializeComponent();
FlyoutPage.ListView.ItemSelected += ListView_ItemSelected;
}
private void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
var item = e.SelectedItem as SampleFlyoutPageFlyoutMenuItem;
if (item == null)
return;
var page = (Page)Activator.CreateInstance(item.TargetType);
page.Title = item.Title;
Detail = new NavigationPage(page);
IsPresented = false;
FlyoutPage.ListView.SelectedItem = null;
}
}
}

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Text;
using Xamarin.Forms;
namespace XamarinStudy.Views
{
internal class SampleFlyoutPage2 : FlyoutPage
{
public SampleFlyoutPage2()
{
Flyout = new SampleContentPage() { Title = "FlyOutPage" };
Detail = new NavigationPage(new SampleToolbarPage());
}
}
}

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="XamarinStudy.Views.SampleFlyoutPageDetail"
Title="Detail">
<StackLayout Padding="10">
<Label Text="This is a detail page. To get the 'triple' line icon on each platform add a icon to each platform and update the 'Flyout' page with an Icon that references it."/>
</StackLayout>
</ContentPage>

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace XamarinStudy.Views
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class SampleFlyoutPageDetail : ContentPage
{
public SampleFlyoutPageDetail()
{
InitializeComponent();
}
}
}

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="XamarinStudy.Views.SampleFlyoutPageFlyout"
Title="Flyout">
<StackLayout>
<ListView x:Name="MenuItemsListView"
SeparatorVisibility="None"
HasUnevenRows="true"
ItemsSource="{Binding MenuItems}">
<ListView.Header>
<Grid BackgroundColor="#03A9F4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="10"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="80"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="10"/>
</Grid.RowDefinitions>
<Label
Grid.Column="1"
Grid.Row="2"
Text="AppName"
Style="{DynamicResource SubtitleStyle}"/>
</Grid>
</ListView.Header>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Padding="15,10" HorizontalOptions="FillAndExpand">
<Label VerticalOptions="FillAndExpand"
VerticalTextAlignment="Center"
Text="{Binding Title}"
FontSize="24"/>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage>

@ -0,0 +1,56 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace XamarinStudy.Views
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class SampleFlyoutPageFlyout : ContentPage
{
public ListView ListView;
public SampleFlyoutPageFlyout()
{
InitializeComponent();
BindingContext = new SampleFlyoutPageFlyoutViewModel();
ListView = MenuItemsListView;
}
private class SampleFlyoutPageFlyoutViewModel : INotifyPropertyChanged
{
public ObservableCollection<SampleFlyoutPageFlyoutMenuItem> MenuItems { get; set; }
public SampleFlyoutPageFlyoutViewModel()
{
MenuItems = new ObservableCollection<SampleFlyoutPageFlyoutMenuItem>(new[]
{
new SampleFlyoutPageFlyoutMenuItem { Id = 0, Title = "Page 1" },
new SampleFlyoutPageFlyoutMenuItem { Id = 1, Title = "Page 2" },
new SampleFlyoutPageFlyoutMenuItem { Id = 2, Title = "Page 3" },
new SampleFlyoutPageFlyoutMenuItem { Id = 3, Title = "Page 4" },
new SampleFlyoutPageFlyoutMenuItem { Id = 4, Title = "Page 5" },
});
}
#region INotifyPropertyChanged Implementation
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
if (PropertyChanged == null)
return;
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
}
}

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace XamarinStudy.Views
{
public class SampleFlyoutPageFlyoutMenuItem
{
public SampleFlyoutPageFlyoutMenuItem()
{
TargetType = typeof(SampleFlyoutPageFlyoutMenuItem);
}
public int Id { get; set; }
public string Title { get; set; }
public Type TargetType { get; set; }
}
}

@ -14,6 +14,15 @@
<EmbeddedResource Update="Views\SampleContentPage.xaml"> <EmbeddedResource Update="Views\SampleContentPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator> <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Update="Views\SampleFlyoutPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Views\SampleFlyoutPageDetail.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Views\SampleFlyoutPageFlyout.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Views\SampleTabPage.xaml"> <EmbeddedResource Update="Views\SampleTabPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator> <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource> </EmbeddedResource>

Loading…
Cancel
Save