This commit is contained in:
Anton Volkov
2019-03-27 10:01:10 +03:00
parent 777bfa1358
commit 5a2c132318
14 changed files with 120 additions and 99 deletions
+13 -13
View File
@@ -20,20 +20,23 @@ namespace JiraTimeBot.Ui
protected override void OnStartup(StartupEventArgs e)
{
var builder = new ContainerBuilder();
builder.Register(c => new MainWindow())
.SingleInstance();
builder.Register(c => new ApplicationModel()).SingleInstance();
builder.Register(c => new SettingsViewModel()).SingleInstance();
builder.Register<MainWindow>(c =>
{
var result = new MainWindow();
result.DataContext = c.Resolve<ApplicationViewModel>();
return result;
}).SingleInstance();
builder.RegisterType<SettingsPage>().SingleInstance();
builder.RegisterType<MainPage>().SingleInstance();
builder.RegisterType<ApplicationModel>().SingleInstance();
builder.RegisterType<MainViewModel>().SingleInstance();
builder.RegisterType<ApplicationViewModel>().SingleInstance();
builder.RegisterType<MainPageViewModel>().SingleInstance();
builder.RegisterType<SettingsViewModel>().SingleInstance();
builder.RegisterType<MainPage>().SingleInstance();
builder.RegisterType<SettingsPage>().SingleInstance();
builder.RegisterAggregateService<IRegisteredPages>();
builder.RegisterAggregateService<IRegisteredViewModels>();
builder.RegisterType<ApplicationNavigator>()
@@ -43,13 +46,10 @@ namespace JiraTimeBot.Ui
_container = builder.Build();
var mainWindow = _container.Resolve<MainWindow>();
var nav = _container.Resolve<IApplicationNavigator>();
nav.NavigateToMain();
//var mainPage = _container.Resolve<MainPage>();
//mainWindow.Navigate(mainPage);
mainWindow.ShowDialog();
nav.NavigateToSettings();
mainWindow.Show();
base.OnStartup(e);
}
}
+6 -11
View File
@@ -4,35 +4,30 @@ namespace JiraTimeBot.Ui
{
public interface IRegisteredViewModels
{
MainViewModel Main { get; set; }
SettingsViewModel Settings { get; set; }
MainPageViewModel MainPage { get; set; }
}
public class ApplicationNavigator : IApplicationNavigator
{
private readonly MainWindow _mainWindow;
private readonly IRegisteredPages _pages;
private readonly ApplicationViewModel _applicationViewModel;
private readonly IRegisteredViewModels _viewModels;
public ApplicationNavigator(MainWindow mainWindow,
IRegisteredPages pages,
public ApplicationNavigator(ApplicationViewModel applicationViewModel,
IRegisteredViewModels viewModels)
{
_mainWindow = mainWindow;
_pages = pages;
_applicationViewModel = applicationViewModel;
_viewModels = viewModels;
}
public void NavigateToMain()
{
_pages.Main.DataContext = _viewModels.Main;
_mainWindow.Navigate(_pages.Main);
_applicationViewModel.CurrentViewModel = _viewModels.MainPage;
}
public void NavigateToSettings()
{
_pages.Settings.DataContext = _viewModels.Settings;
_mainWindow.Navigate(_pages.Settings);
_applicationViewModel.CurrentViewModel = _viewModels.Settings;
}
}
}
-9
View File
@@ -1,9 +0,0 @@
namespace JiraTimeBot.Ui
{
public interface IRegisteredPages
{
SettingsPage Settings { get; set; }
MainPage Main { get; set; }
}
}
+2 -2
View File
@@ -96,10 +96,10 @@
<Compile Include="Commands\RelayCommand.cs" />
<Compile Include="Commands\RelayCommandAsync%27.cs" />
<Compile Include="IApplicationNavigator.cs" />
<Compile Include="IRegisteredPages.cs" />
<Compile Include="Models\ApplicationModel.cs" />
<Compile Include="Properties\Annotations.cs" />
<Compile Include="ViewModels\MainViewModel.cs" />
<Compile Include="ViewModels\ApplicationViewModel.cs" />
<Compile Include="ViewModels\MainPageViewModel.cs" />
<Compile Include="ViewModels\SettingsViewModel.cs" />
<Compile Include="ViewModels\ViewModelBase.cs" />
<Compile Include="Views\MainPage.xaml.cs">
@@ -0,0 +1,40 @@
using Aeroclub.CL.ASIA.Application.UI.Wpf.Commands;
using System;
namespace JiraTimeBot.Ui.ViewModels
{
public class ApplicationViewModel : ViewModelBase
{
private readonly Func<IApplicationNavigator> _appNavigator;
private ViewModelBase _currentViewModel;
public ApplicationViewModel(Func<IApplicationNavigator> appNavigator)
{
_appNavigator = appNavigator;
NavigateToSettings = new RelayCommand(() =>
{
_appNavigator().NavigateToSettings();
});
NavigateToMain = new RelayCommand(() =>
{
_appNavigator().NavigateToMain();
});
}
public ViewModelBase CurrentViewModel
{
get => _currentViewModel;
set
{
_currentViewModel = value;
OnPropertyChanged();
}
}
public RelayCommand NavigateToSettings { get; set; }
public RelayCommand NavigateToMain { get; set; }
}
}
@@ -0,0 +1,7 @@
namespace JiraTimeBot.Ui.ViewModels
{
public class MainPageViewModel : ViewModelBase
{
}
}
@@ -1,22 +0,0 @@
using Aeroclub.CL.ASIA.Application.UI.Wpf.Commands;
using System;
namespace JiraTimeBot.Ui.ViewModels
{
public class MainViewModel : ViewModelBase
{
private readonly Func<IApplicationNavigator> _appNavigator;
public MainViewModel(Func<IApplicationNavigator> appNavigator)
{
_appNavigator = appNavigator;
NavigateToSettings = new RelayCommand(() =>
{
_appNavigator().NavigateToSettings();
});
}
public RelayCommand NavigateToSettings { get; set; }
}
}
+6 -8
View File
@@ -1,4 +1,4 @@
<Page x:Class="JiraTimeBot.Ui.MainPage"
<UserControl x:Class="JiraTimeBot.Ui.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
@@ -6,16 +6,14 @@
xmlns:local="clr-namespace:JiraTimeBot.Ui"
xmlns:viewModels="clr-namespace:JiraTimeBot.Ui.ViewModels"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
d:DataContext="{d:DesignInstance viewModels:MainViewModel}"
Title="MainPage">
Height="100"
Width="400"
d:DataContext="{d:DesignInstance viewModels:MainPageViewModel}" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="Main"></TextBlock>
<Button Grid.Row="1" Command="{Binding Path=NavigateToSettings}" Content="NavToSettings" />
<TextBlock Text="Application"></TextBlock>
</Grid>
</Page>
</UserControl>
+2 -17
View File
@@ -1,24 +1,9 @@
using System;
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 JiraTimeBot.Ui
namespace JiraTimeBot.Ui
{
/// <summary>
/// Interaction logic for MainPage.xaml
/// </summary>
public partial class MainPage : Page
public partial class MainPage
{
public MainPage()
{
+32 -6
View File
@@ -1,11 +1,37 @@
<NavigationWindow x:Class="JiraTimeBot.Ui.MainWindow"
<Window x:Class="JiraTimeBot.Ui.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewModels="clr-namespace:JiraTimeBot.Ui.ViewModels"
xmlns:ui="clr-namespace:JiraTimeBot.Ui"
mc:Ignorable="d"
ShowsNavigationUI="False"
Height="Auto"
Width="Auto"
Title="MainWindow">
</NavigationWindow>
SizeToContent="WidthAndHeight"
d:DataContext="{d:DesignInstance viewModels:ApplicationViewModel}"
Title="ApplicationWindow">
<Window.Resources>
<DataTemplate DataType="{x:Type viewModels:MainPageViewModel}">
<ui:MainPage/>
</DataTemplate>
<DataTemplate DataType="{x:Type viewModels:SettingsViewModel}">
<ui:SettingsPage/>
</DataTemplate>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0"
Content="NavToMain" Command="{Binding Path=NavigateToMain}" />
<Button Grid.Row="0" Grid.Column="1"
Content="NavToSettings" Command="{Binding Path=NavigateToSettings}" />
<ContentControl Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2"
Content="{Binding Path=CurrentViewModel}" />
</Grid>
</Window>
@@ -5,6 +5,8 @@
/// </summary>
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
+2 -1
View File
@@ -5,7 +5,8 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:JiraTimeBot.Ui"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
Width="100"
Height="200">
<Grid>
</Grid>
+3 -3
View File
@@ -1,4 +1,4 @@
<Page x:Class="JiraTimeBot.Ui.SettingsPage"
<UserControl x:Class="JiraTimeBot.Ui.SettingsPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
@@ -6,9 +6,9 @@
xmlns:local="clr-namespace:JiraTimeBot.Ui"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
Title="SettingsPage">
>
<Grid>
<TextBlock Text="Settings"></TextBlock>
</Grid>
</Page>
</UserControl>
@@ -1,11 +1,9 @@
using System.Windows.Controls;
namespace JiraTimeBot.Ui
namespace JiraTimeBot.Ui
{
/// <summary>
/// Interaction logic for SettingsPage.xaml
/// </summary>
public partial class SettingsPage : Page
public partial class SettingsPage
{
public SettingsPage()
{