using System; using System.Collections.Generic; using Avalonia.Controls; namespace ChronoFlow.View { public class ViewManager { private readonly ContentControl _contentControl; // Dictionary speichert die registrierten Views mit ihren Erstellungs-Methoden (Factories) private readonly Dictionary> _views = new(); public ViewManager(ContentControl contentControl) { _contentControl = contentControl; } /// /// Registriert eine View mit einem eindeutigen Namen. /// public void Register(string name, Func factory) { if (!_views.ContainsKey(name)) { _views[name] = factory; } } /// /// Zeigt eine registrierte View an. /// public void Show(string name) { if (_views.TryGetValue(name, out var factory)) { var view = factory(); _contentControl.Content = view; } else { throw new InvalidOperationException($"View {name} is not registered"); } } /// /// Holt eine bereits registrierte View als konkreten Typ (z. B. AdminMainView). /// public bool TryGetView(string name, out T? view) where T : class { if (_views.TryGetValue(name, out var factory)) { var instance = factory(); view = instance as T; return view != null; } view = null; return false; } } }