progress
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
namespace JiraTimeBot.Ui
|
||||
{
|
||||
public interface IRegisteredPages
|
||||
{
|
||||
SettingsPage Settings { get; set; }
|
||||
|
||||
MainPage Main { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user