60 lines
2.0 KiB
C#
60 lines
2.0 KiB
C#
using System;
|
|
using System.Collections.ObjectModel;
|
|
using System.Linq;
|
|
using Aurora.Frontend.Components.NavigationMenu;
|
|
using Aurora.Frontend.Views.MainView;
|
|
using Xamarin.Forms;
|
|
using Xamarin.Forms.Xaml;
|
|
|
|
namespace Aurora.Frontend.Views.Main
|
|
{
|
|
[XamlCompilation(XamlCompilationOptions.Compile)]
|
|
public partial class MainView : MasterDetailPage
|
|
{
|
|
public MainView()
|
|
{
|
|
InitializeComponent();
|
|
BindingContext = new MainViewModel();
|
|
MasterPage.ListView.ItemSelected += ListView_ItemSelected;
|
|
|
|
Appearing += OnAppearing;
|
|
}
|
|
~MainView()
|
|
{
|
|
Appearing -= OnAppearing;
|
|
}
|
|
|
|
private void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
|
|
{
|
|
var item = e.SelectedItem as NavigationItem;
|
|
if (item == null)
|
|
return;
|
|
|
|
var view = (View)Activator.CreateInstance(item.TargetType);
|
|
|
|
ContentPresenter viewContent = (ContentPresenter)ContentPage.Content.FindByName("ViewContent");
|
|
viewContent.Content = view;
|
|
|
|
MasterPage.ListView.SelectedItem = null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Event handler for page appearing.
|
|
/// </summary>
|
|
/// <param name="sender">The object that fired the event.</param>
|
|
/// <param name="args">The event arguments</param>
|
|
private void OnAppearing(object sender, EventArgs args)
|
|
{
|
|
//Set initial view from first item in list
|
|
ObservableCollection<NavigationGroupItem> screenList = (ObservableCollection<NavigationGroupItem>)MasterPage.ListView.ItemsSource;
|
|
var view = (View)Activator.CreateInstance(screenList.FirstOrDefault().FirstOrDefault().TargetType);
|
|
|
|
ContentPresenter viewContent = (ContentPresenter)ContentPage.Content.FindByName("ViewContent");
|
|
viewContent.Content = view;
|
|
|
|
MasterPage.ListView.SelectedItem = screenList.FirstOrDefault();
|
|
}
|
|
}
|
|
|
|
}
|