From 5a2c13231880f6781c0ae3cff251e33f4f724d31 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Wed, 27 Mar 2019 10:01:10 +0300 Subject: [PATCH] progress --- src/JiraTimeBot.Ui/App.xaml.cs | 32 +++++++-------- src/JiraTimeBot.Ui/ApplicationNavigator.cs | 17 +++----- src/JiraTimeBot.Ui/IRegisteredPages.cs | 9 ----- src/JiraTimeBot.Ui/JiraTimeBot.Ui.csproj | 4 +- .../ViewModels/ApplicationViewModel.cs | 40 +++++++++++++++++++ .../ViewModels/MainPageViewModel.cs | 7 ++++ .../ViewModels/MainViewModel.cs | 22 ---------- src/JiraTimeBot.Ui/Views/MainPage.xaml | 14 +++---- src/JiraTimeBot.Ui/Views/MainPage.xaml.cs | 19 +-------- src/JiraTimeBot.Ui/Views/MainWindow.xaml | 38 +++++++++++++++--- src/JiraTimeBot.Ui/Views/MainWindow.xaml.cs | 2 + src/JiraTimeBot.Ui/Views/Settings.xaml | 3 +- src/JiraTimeBot.Ui/Views/SettingsPage.xaml | 6 +-- src/JiraTimeBot.Ui/Views/SettingsPage.xaml.cs | 6 +-- 14 files changed, 120 insertions(+), 99 deletions(-) delete mode 100644 src/JiraTimeBot.Ui/IRegisteredPages.cs create mode 100644 src/JiraTimeBot.Ui/ViewModels/ApplicationViewModel.cs create mode 100644 src/JiraTimeBot.Ui/ViewModels/MainPageViewModel.cs delete mode 100644 src/JiraTimeBot.Ui/ViewModels/MainViewModel.cs diff --git a/src/JiraTimeBot.Ui/App.xaml.cs b/src/JiraTimeBot.Ui/App.xaml.cs index 1eb0115..cafa44d 100644 --- a/src/JiraTimeBot.Ui/App.xaml.cs +++ b/src/JiraTimeBot.Ui/App.xaml.cs @@ -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(c => + { + var result = new MainWindow(); + result.DataContext = c.Resolve(); + return result; + }).SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); builder.RegisterType().SingleInstance(); - - - builder.RegisterAggregateService(); + + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterAggregateService(); builder.RegisterType() @@ -43,13 +46,10 @@ namespace JiraTimeBot.Ui _container = builder.Build(); var mainWindow = _container.Resolve(); - var nav = _container.Resolve(); - nav.NavigateToMain(); - - //var mainPage = _container.Resolve(); - //mainWindow.Navigate(mainPage); - mainWindow.ShowDialog(); + + nav.NavigateToSettings(); + mainWindow.Show(); base.OnStartup(e); } } diff --git a/src/JiraTimeBot.Ui/ApplicationNavigator.cs b/src/JiraTimeBot.Ui/ApplicationNavigator.cs index 2cdf01a..b350eee 100644 --- a/src/JiraTimeBot.Ui/ApplicationNavigator.cs +++ b/src/JiraTimeBot.Ui/ApplicationNavigator.cs @@ -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; } } } \ No newline at end of file diff --git a/src/JiraTimeBot.Ui/IRegisteredPages.cs b/src/JiraTimeBot.Ui/IRegisteredPages.cs deleted file mode 100644 index 8d2d6cd..0000000 --- a/src/JiraTimeBot.Ui/IRegisteredPages.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace JiraTimeBot.Ui -{ - public interface IRegisteredPages - { - SettingsPage Settings { get; set; } - - MainPage Main { get; set; } - } -} \ No newline at end of file diff --git a/src/JiraTimeBot.Ui/JiraTimeBot.Ui.csproj b/src/JiraTimeBot.Ui/JiraTimeBot.Ui.csproj index 0dc509f..952b4e3 100644 --- a/src/JiraTimeBot.Ui/JiraTimeBot.Ui.csproj +++ b/src/JiraTimeBot.Ui/JiraTimeBot.Ui.csproj @@ -96,10 +96,10 @@ - - + + diff --git a/src/JiraTimeBot.Ui/ViewModels/ApplicationViewModel.cs b/src/JiraTimeBot.Ui/ViewModels/ApplicationViewModel.cs new file mode 100644 index 0000000..df71410 --- /dev/null +++ b/src/JiraTimeBot.Ui/ViewModels/ApplicationViewModel.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 _appNavigator; + private ViewModelBase _currentViewModel; + + public ApplicationViewModel(Func 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; } + } +} \ No newline at end of file diff --git a/src/JiraTimeBot.Ui/ViewModels/MainPageViewModel.cs b/src/JiraTimeBot.Ui/ViewModels/MainPageViewModel.cs new file mode 100644 index 0000000..e89dcaf --- /dev/null +++ b/src/JiraTimeBot.Ui/ViewModels/MainPageViewModel.cs @@ -0,0 +1,7 @@ +namespace JiraTimeBot.Ui.ViewModels +{ + public class MainPageViewModel : ViewModelBase + { + + } +} \ No newline at end of file diff --git a/src/JiraTimeBot.Ui/ViewModels/MainViewModel.cs b/src/JiraTimeBot.Ui/ViewModels/MainViewModel.cs deleted file mode 100644 index 2e7b7c0..0000000 --- a/src/JiraTimeBot.Ui/ViewModels/MainViewModel.cs +++ /dev/null @@ -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 _appNavigator; - - public MainViewModel(Func appNavigator) - { - _appNavigator = appNavigator; - - NavigateToSettings = new RelayCommand(() => - { - _appNavigator().NavigateToSettings(); - }); - } - - public RelayCommand NavigateToSettings { get; set; } - } -} \ No newline at end of file diff --git a/src/JiraTimeBot.Ui/Views/MainPage.xaml b/src/JiraTimeBot.Ui/Views/MainPage.xaml index 13636d2..ec1c23c 100644 --- a/src/JiraTimeBot.Ui/Views/MainPage.xaml +++ b/src/JiraTimeBot.Ui/Views/MainPage.xaml @@ -1,4 +1,4 @@ - - + Height="100" + Width="400" + d:DataContext="{d:DesignInstance viewModels:MainPageViewModel}" > - -