DesignPreview WIP

This commit is contained in:
2023-07-18 07:48:13 +02:00
parent cd31104f8d
commit db32c7aef3
13 changed files with 389 additions and 23 deletions

View File

@@ -5,8 +5,8 @@
FontFamily="{Binding MainFont^, Mode=OneWay}"
Icon="/Assets/filetime.ico"
KeyDown="OnKeyDown"
MinHeight="600"
MinWidth="800"
MinHeight="800"
MinWidth="1000"
Opened="OnWindowOpened"
RequestedThemeVariant="Dark"
Title="FileTime"
@@ -44,7 +44,7 @@
</Window.Styles>
<Grid Background="{DynamicResource AppBackgroundBrush}">
<Grid IsVisible="{Binding Loading, Converter={x:Static BoolConverters.Not}, FallbackValue=False}" x:DataType="vm:MainWindowViewModel">
<Grid IsVisible="{Binding Loading, Converter={x:Static BoolConverters.Not}, FallbackValue=False}" x:DataType="vm:IMainWindowViewModel">
<Grid ColumnDefinitions="250,*" RowDefinitions="Auto,*">

View File

@@ -17,8 +17,9 @@ namespace FileTime.GuiApp.Views;
public partial class MainWindow : Window, IUiAccessor
{
private readonly ILogger<MainWindow>? _logger;
private readonly IModalService _modalService;
private readonly Action? _initializer;
private ILogger<MainWindow>? _logger;
private IModalService? _modalService;
private IReadOnlyCollection<IModalViewModel>? _openModals;
private ReadInputsViewModel? _inputViewModel;
private IDisposable? _inputViewModelSubscription;
@@ -37,29 +38,40 @@ public partial class MainWindow : Window, IUiAccessor
public MainWindow()
{
_logger = DI.ServiceProvider.GetService<ILogger<MainWindow>>();
_logger?.LogInformation($"Starting {nameof(MainWindow)} initialization...");
_modalService = DI.ServiceProvider.GetRequiredService<IModalService>();
_modalService.OpenModals.ToCollection().Subscribe(m => _openModals = m);
DI.ServiceProvider.GetRequiredService<Services.SystemClipboardService>().UiAccessor = this;
InitializeComponent();
ReadInputContainer.PropertyChanged += ReadInputContainerOnPropertyChanged;
DataContextChanged += (sender, args) =>
if (Design.IsDesignMode)
{
if (DataContext is not MainWindowViewModel mainWindowViewModel) return;
DataContext = new MainWindowDesignViewModel();
}
}
_inputViewModelSubscription?.Dispose();
_inputViewModelSubscription = mainWindowViewModel.DialogService.ReadInput.Subscribe(
inputViewModel => _inputViewModel = inputViewModel
);
};
public MainWindow(Action initializer) : this()
{
_initializer = initializer;
}
private void OnWindowOpened(object sender, EventArgs e)
{
if (DataContext is not MainWindowViewModel)
if (DataContext is not MainWindowViewModel && !Design.IsDesignMode)
{
_initializer?.Invoke();
_logger = DI.ServiceProvider.GetService<ILogger<MainWindow>>();
_modalService = DI.ServiceProvider.GetRequiredService<IModalService>();
_modalService.OpenModals.ToCollection().Subscribe(m => _openModals = m);
DI.ServiceProvider.GetRequiredService<Services.SystemClipboardService>().UiAccessor = this;
ReadInputContainer.PropertyChanged += ReadInputContainerOnPropertyChanged;
DataContextChanged += (_, _) =>
{
if (DataContext is not MainWindowViewModel mainWindowViewModel) return;
_inputViewModelSubscription?.Dispose();
_inputViewModelSubscription = mainWindowViewModel.DialogService.ReadInput.Subscribe(
inputViewModel => _inputViewModel = inputViewModel
);
};
_logger?.LogInformation(
$"{nameof(MainWindow)} opened, starting {nameof(MainWindowViewModel)} initialization...");
ViewModel = DI.ServiceProvider.GetRequiredService<MainWindowViewModel>();