using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace App_Project
{
///
/// Logika interakcji dla klasy MainWindow.xaml
///
public partial class MainWindow : Window
{
private IDictionary views = new ConcurrentDictionary();
public MainWindow()
{
InitializeComponent();
MinimizeButton.Click += (s, e) => WindowState = WindowState.Minimized;
MaximizeButton.Click += (s, e) => WindowState = WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized;
CloseButton.Click += (s, e) => Close();
StartPage();
}
private void StartPage()
{
Home home = new Home();
MainGrid.Children.Add(home);
}
private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
int index = ListViewMenu.SelectedIndex;
var item = ListViewMenu.Items[index] as ListViewItem;
string viewName = "Home";
if (item.Content != null)
{
viewName = (item.Content as TextBlock).Text;
}
try
{
DisplayView(viewName);
}
catch (ArgumentException ex)
{
//not recognized viewName
}
}
private void DisplayView(string viewName)
{
if (MainGrid == null)
{
return;
}
MainGrid.Children.Clear();
MainGrid.Children.Add(PickCorrectView(viewName));
}
private UserControl PickCorrectView(string viewName)
{
if (views.ContainsKey(viewName))
{
return views[viewName];
}
else
{
return AddNewView(viewName);
}
}
private UserControl AddNewView(string viewName)
{
UserControl view;
switch (viewName)
{
case "Home":
view = new Home();
break;
case "Industry":
view = new Industry();
break;
default:
throw new ArgumentException("can't recognize specified view name", "viewName");
}
views.Add(viewName, view);
return view;
}
}
}