using Avalonia; using Avalonia.Controls; using Project_Periodensystem.Model; using Project_Periodensystem.Controller; namespace Project_Periodensystem.View { /// /// MainWindow mit sauberem MVC-Pattern und Interface-basierter Navigation /// public partial class MainWindow : Window { private ContentControl? mainContent; private readonly PeriodensystemController _dataController; private readonly NavigationService _navigationService; public MainWindow() { InitializeComponent(); mainContent = this.FindControl("MainContent"); // Erstelle Navigation Service _navigationService = new NavigationService(this); // Controller mit Navigation Service initialisieren (Dependency Injection) _dataController = new PeriodensystemController(_navigationService); // Data Controller an Navigation Service setzen _navigationService.SetDataController(_dataController); // Landing Page anzeigen ShowLandingPage(); } /// /// Zeigt die Landing Page an /// public void ShowLandingPage() { if (mainContent != null) { var landingPage = new LandingPage(); landingPage.SetController(_dataController); mainContent.Content = landingPage; Logger.Log("Landing Page angezeigt (mit Interface-basierter Navigation)"); } } /// /// Cleanup beim Schließen /// protected override void OnClosed(System.EventArgs e) { // NavigationService implementiert kein IDisposable mehr (keine Events) base.OnClosed(e); } } }