using System;
using System.Collections.Generic;
using Avalonia.Controls;
using Microsoft.Data.Sqlite;
namespace ChronoFlow.View
{
///
/// Verwaltet alle Views der Anwendung und wechselt sie bei Bedarf.
///
public class ViewManager
{
private readonly ContentControl _targetControl;
private readonly Dictionary> _registieredViews = new();
public ViewManager(ContentControl targetControl)
{
_targetControl = targetControl;
}
///
/// Registriert eine View mit einem Namen
///
public void Show(string name, Func viewFactory)
{
_registieredViews[name] = viewFactory;
}
///
/// Zeigt die View mit dem gegebenen Namen an.
///
public void Show(string name)
{
if(_registieredViews.TryGetValue(name, out var factory))
_targetControl.Content = factory();
else
{
throw new InvalidOperationException($"View {name} is not registered");
}
}
public void Register(string name, Func viewFactory)
{
_registieredViews[name] = viewFactory;
}
}
}