diff --git a/Project_Periodensystem.Controller/INavigationService.cs b/Project_Periodensystem.Controller/INavigationService.cs
new file mode 100644
index 0000000..684471a
--- /dev/null
+++ b/Project_Periodensystem.Controller/INavigationService.cs
@@ -0,0 +1,17 @@
+using System;
+
+namespace Project_Periodensystem.Controller
+{
+ ///
+ /// Interface für Navigation - trennt Controller von UI-Dependencies
+ /// Controller definiert WAS navigiert wird, View definiert WIE
+ ///
+ public interface INavigationService
+ {
+ void NavigateToPeriodicTable();
+ void NavigateToAbout();
+ void NavigateToLanding();
+ void ToggleTheme();
+ void ShowExportConfirmation();
+ }
+}
diff --git a/Project_Periodensystem.Controller/PeriodensystemController.cs b/Project_Periodensystem.Controller/PeriodensystemController.cs
index 531a5d7..24b2005 100644
--- a/Project_Periodensystem.Controller/PeriodensystemController.cs
+++ b/Project_Periodensystem.Controller/PeriodensystemController.cs
@@ -9,17 +9,22 @@ namespace Project_Periodensystem.Controller
///
/// Controller für das Periodensystem - verwaltet die Geschäftslogik
/// und trennt View von Model gemäß MVC-Pattern
+ /// SAUBERE ARCHITEKTUR: Verwendet Interface für Navigation
///
public class PeriodensystemController
{
// Nullable Field um Warning zu vermeiden
private List _elements = new List();
-
+
+ // Navigation Service Interface (KEINE direkte UI-Dependency!)
+ private readonly INavigationService? _navigationService;
+
///
- /// Konstruktor - initialisiert den Controller
+ /// Konstruktor - optional mit Navigation Service
///
- public PeriodensystemController()
+ public PeriodensystemController(INavigationService? navigationService = null)
{
+ _navigationService = navigationService;
LoadElements();
}
@@ -346,5 +351,91 @@ namespace Project_Periodensystem.Controller
return (lightest, heaviest);
}
+
+ // ===== NAVIGATION CONTROLLER METHODS (SAUBERES MVC MIT INTERFACE) =====
+
+ ///
+ /// Behandelt Navigation zum Periodensystem (Controller-Logic)
+ ///
+ public void HandleNavigateToPeriodicTable()
+ {
+ try
+ {
+ Logger.Log("Controller: Navigation zum Periodensystem angefordert");
+ _navigationService?.NavigateToPeriodicTable();
+ }
+ catch (Exception ex)
+ {
+ Logger.LogException(ex, "HandleNavigateToPeriodicTable");
+ }
+ }
+
+ ///
+ /// Behandelt Navigation zur About-Seite (Controller-Logic)
+ ///
+ public void HandleNavigateToAbout()
+ {
+ try
+ {
+ Logger.Log("Controller: Navigation zu About angefordert");
+ _navigationService?.NavigateToAbout();
+ }
+ catch (Exception ex)
+ {
+ Logger.LogException(ex, "HandleNavigateToAbout");
+ }
+ }
+
+ ///
+ /// Behandelt Navigation zur Landing Page (Controller-Logic)
+ ///
+ public void HandleNavigateToLanding()
+ {
+ try
+ {
+ Logger.Log("Controller: Navigation zur Landing Page angefordert");
+ _navigationService?.NavigateToLanding();
+ }
+ catch (Exception ex)
+ {
+ Logger.LogException(ex, "HandleNavigateToLanding");
+ }
+ }
+
+ ///
+ /// Behandelt Theme-Wechsel (Controller-Logic)
+ ///
+ public void HandleToggleTheme()
+ {
+ try
+ {
+ Logger.Log("Controller: Theme-Wechsel angefordert");
+ _navigationService?.ToggleTheme();
+ }
+ catch (Exception ex)
+ {
+ Logger.LogException(ex, "HandleToggleTheme");
+ }
+ }
+
+ ///
+ /// Behandelt Daten-Export (Controller-Logic)
+ ///
+ public void HandleExportData()
+ {
+ try
+ {
+ Logger.Log("Controller: Daten-Export angefordert");
+
+ // Geschäftslogik für Export
+ SaveElements(); // Persistierung
+
+ _navigationService?.ShowExportConfirmation();
+ }
+ catch (Exception ex)
+ {
+ Logger.LogException(ex, "HandleExportData");
+ }
+ }
}
}
diff --git a/Project_Periodensystem.View/AboutPage.axaml.cs b/Project_Periodensystem.View/AboutPage.axaml.cs
index 79a2ef0..d4e95f8 100644
--- a/Project_Periodensystem.View/AboutPage.axaml.cs
+++ b/Project_Periodensystem.View/AboutPage.axaml.cs
@@ -5,14 +5,17 @@ using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Avalonia.VisualTree;
using Project_Periodensystem.Model;
+using Project_Periodensystem.Controller;
namespace Project_Periodensystem.View
{
///
- /// Code-Behind für die About-Seite
+ /// Code-Behind für die About-Seite - SAUBERES MVC
///
public partial class AboutPage : UserControl
{
+ private PeriodensystemController? _controller;
+
///
/// Konstruktor
///
@@ -21,54 +24,63 @@ namespace Project_Periodensystem.View
InitializeComponent();
}
+ ///
+ /// Controller setzen (Dependency Injection für MVC)
+ ///
+ public void SetController(PeriodensystemController controller)
+ {
+ _controller = controller ?? throw new ArgumentNullException(nameof(controller));
+ Logger.Log("AboutPage: Controller gesetzt (MVC-Pattern)");
+ }
+
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
///
- /// Zurück-Button - Navigation zur Landing Page
+ /// Zurück-Button - Navigation zur Landing Page - SAUBERES MVC
///
private void BackButton_Click(object? sender, RoutedEventArgs e)
{
try
{
- var mainWindow = TopLevel.GetTopLevel(this) as Window;
- if (mainWindow != null)
+ if (_controller != null)
{
- var landingPage = new LandingPage();
- mainWindow.Content = landingPage;
- Logger.Log("Navigation zurück zur Landing Page");
+ // Controller übernimmt Navigation
+ _controller.HandleNavigateToLanding();
+ }
+ else
+ {
+ Logger.LogError("Controller nicht gesetzt - kann nicht navigieren");
}
}
- catch (System.Exception ex)
+ catch (Exception ex)
{
- Logger.Log($"Fehler bei Navigation zurück: {ex.Message}");
+ Logger.LogException(ex, "BackButton_Click");
}
}
///
- /// Event-Handler für Theme-Button - VEREINHEITLICHT mit anderen Seiten
+ /// Event-Handler für Theme-Button - SAUBERES MVC
///
private void ThemeButton_Click(object? sender, RoutedEventArgs e)
{
try
{
- // GLEICHE LOGIK wie auf LandingPage und PeriodicTablePage
- var app = Application.Current;
- if (app != null)
+ if (_controller != null)
{
- var currentTheme = app.ActualThemeVariant;
- app.RequestedThemeVariant = currentTheme == Avalonia.Styling.ThemeVariant.Dark
- ? Avalonia.Styling.ThemeVariant.Light
- : Avalonia.Styling.ThemeVariant.Dark;
-
- Logger.Log($"Theme gewechselt zu: {app.RequestedThemeVariant}");
+ // Controller übernimmt Theme-Logik
+ _controller.HandleToggleTheme();
+ }
+ else
+ {
+ Logger.LogError("Controller nicht gesetzt - kann Theme nicht wechseln");
}
}
catch (Exception ex)
{
- Logger.Log($"Fehler beim Theme-Wechsel: {ex.Message}");
+ Logger.LogException(ex, "ThemeButton_Click");
}
}
}
diff --git a/Project_Periodensystem.View/LandingPage.axaml.cs b/Project_Periodensystem.View/LandingPage.axaml.cs
index 818b1f9..0679607 100644
--- a/Project_Periodensystem.View/LandingPage.axaml.cs
+++ b/Project_Periodensystem.View/LandingPage.axaml.cs
@@ -4,14 +4,18 @@ using Avalonia.Controls;
using Avalonia.Interactivity;
using Project_Periodensystem.Model;
using Project_Periodensystem.Persistence;
+using Project_Periodensystem.Controller;
namespace Project_Periodensystem.View
{
///
- /// Code-Behind für die Landing Page
+ /// Code-Behind für die Landing Page - SAUBERES MVC
+ /// Keine direkte Navigation mehr, nur Controller-Aufrufe
///
public partial class LandingPage : UserControl
{
+ private PeriodensystemController? _controller;
+
///
/// Konstruktor
///
@@ -21,84 +25,80 @@ namespace Project_Periodensystem.View
}
///
- /// Event-Handler für Periodensystem-Button
+ /// Controller setzen (Dependency Injection für MVC)
+ ///
+ public void SetController(PeriodensystemController controller)
+ {
+ _controller = controller ?? throw new ArgumentNullException(nameof(controller));
+ Logger.Log("LandingPage: Controller gesetzt (MVC-Pattern)");
+ }
+
+ ///
+ /// Event-Handler für Periodensystem-Button - SAUBERES MVC
///
private void PeriodicTableButton_Click(object? sender, RoutedEventArgs e)
{
try
{
- var mainWindow = TopLevel.GetTopLevel(this) as Window;
- if (mainWindow != null)
+ if (_controller != null)
{
- var periodicTablePage = new PeriodicTablePage();
- mainWindow.Content = periodicTablePage;
- Logger.Log("Navigation zum Periodensystem");
+ // Controller übernimmt Navigation (kein direkter View-Zugriff!)
+ _controller.HandleNavigateToPeriodicTable();
+ }
+ else
+ {
+ Logger.LogError("Controller nicht gesetzt - kann nicht navigieren");
}
}
catch (Exception ex)
{
- Logger.Log($"Fehler bei Navigation zum Periodensystem: {ex.Message}");
+ Logger.LogException(ex, "PeriodicTableButton_Click");
}
}
///
- /// Event-Handler für About-Button
+ /// Event-Handler für About-Button - SAUBERES MVC
///
private void AboutButton_Click(object? sender, RoutedEventArgs e)
{
try
{
- var mainWindow = TopLevel.GetTopLevel(this) as Window;
- if (mainWindow != null)
+ if (_controller != null)
{
- var aboutPage = new AboutPage();
- mainWindow.Content = aboutPage;
- Logger.Log("Navigation zur About-Seite");
+ // Controller übernimmt Navigation
+ _controller.HandleNavigateToAbout();
+ }
+ else
+ {
+ Logger.LogError("Controller nicht gesetzt - kann nicht navigieren");
}
}
catch (Exception ex)
{
- Logger.Log($"Fehler bei Navigation zu About: {ex.Message}");
+ Logger.LogException(ex, "AboutButton_Click");
}
}
///
- /// Event-Handler für Theme-Button (MIT SETTINGS-SPEICHERUNG)
+ /// Event-Handler für Theme-Button - SAUBERES MVC
///
private void ThemeButton_Click(object? sender, RoutedEventArgs e)
{
try
{
- Logger.Log("Theme-Button geklickt");
-
- var app = Application.Current;
- if (app != null)
+ if (_controller != null)
{
- var currentTheme = app.ActualThemeVariant;
- Logger.Log($"Aktuelles Theme: {currentTheme}");
-
- var newTheme = currentTheme == Avalonia.Styling.ThemeVariant.Dark
- ? Avalonia.Styling.ThemeVariant.Light
- : Avalonia.Styling.ThemeVariant.Dark;
-
- app.RequestedThemeVariant = newTheme;
- Logger.Log($"Theme gewechselt zu: {newTheme}");
-
- // NEUE FUNKTION: Theme-Einstellung speichern
- var settings = DataManager.LoadSettings();
- settings.LastTheme = newTheme.ToString();
- settings.LastUsed = DateTime.Now;
- DataManager.SaveSettings(settings);
- Logger.Log("Theme-Einstellung gespeichert");
+ // Controller übernimmt Theme-Logik
+ _controller.HandleToggleTheme();
}
else
{
- Logger.Log("Application.Current ist null!");
+ Logger.LogError("Controller nicht gesetzt - kann Theme nicht wechseln");
}
}
catch (Exception ex)
{
- Logger.Log($"EXCEPTION in ThemeButton_Click: {ex.Message}");
+ Logger.LogException(ex, "ThemeButton_Click");
}
}
}
diff --git a/Project_Periodensystem.View/MainWindow.axaml.cs b/Project_Periodensystem.View/MainWindow.axaml.cs
index 26e7050..1a91175 100644
--- a/Project_Periodensystem.View/MainWindow.axaml.cs
+++ b/Project_Periodensystem.View/MainWindow.axaml.cs
@@ -1,20 +1,34 @@
using Avalonia;
using Avalonia.Controls;
using Project_Periodensystem.Model;
+using Project_Periodensystem.Controller;
namespace Project_Periodensystem.View
{
///
- /// Vereinfachtes MainWindow - nur noch Container für Content
+ /// 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();
}
@@ -25,41 +39,21 @@ namespace Project_Periodensystem.View
{
if (mainContent != null)
{
- mainContent.Content = new LandingPage();
- Logger.Log("Landing Page angezeigt");
+ var landingPage = new LandingPage();
+ landingPage.SetController(_dataController);
+
+ mainContent.Content = landingPage;
+ Logger.Log("Landing Page angezeigt (mit Interface-basierter Navigation)");
}
}
///
- /// Zeigt das Periodensystem an
+ /// Cleanup beim Schließen
///
- public void ShowPeriodicTable()
+ protected override void OnClosed(System.EventArgs e)
{
- Logger.Log("ShowPeriodicTable called");
- try
- {
- if (mainContent != null)
- {
- mainContent.Content = new PeriodicTablePage();
- Logger.Log("PeriodicTablePage created and set");
- }
- }
- catch (System.Exception ex)
- {
- Logger.Log($"Error in ShowPeriodicTable: {ex.Message}");
- }
- }
-
- ///
- /// Zeigt die About Page an
- ///
- public void ShowAboutPage()
- {
- if (mainContent != null)
- {
- mainContent.Content = new AboutPage();
- Logger.Log("About Page angezeigt");
- }
+ // NavigationService implementiert kein IDisposable mehr (keine Events)
+ base.OnClosed(e);
}
}
}
diff --git a/Project_Periodensystem.View/NavigationService.cs b/Project_Periodensystem.View/NavigationService.cs
new file mode 100644
index 0000000..7913699
--- /dev/null
+++ b/Project_Periodensystem.View/NavigationService.cs
@@ -0,0 +1,163 @@
+using System;
+using Avalonia;
+using Avalonia.Controls;
+using Project_Periodensystem.Model;
+using Project_Periodensystem.Persistence;
+using Project_Periodensystem.Controller;
+
+namespace Project_Periodensystem.View
+{
+ ///
+ /// Navigation Service Implementation im View-Layer
+ /// Implementiert INavigationService Interface vom Controller
+ /// SAUBERE TRENNUNG: Controller definiert WAS, View definiert WIE
+ ///
+ public class NavigationService : INavigationService
+ {
+ private readonly Window _mainWindow;
+ private PeriodensystemController? _dataController;
+
+ ///
+ /// Konstruktor
+ ///
+ public NavigationService(Window mainWindow)
+ {
+ _mainWindow = mainWindow ?? throw new ArgumentNullException(nameof(mainWindow));
+ Logger.Log("NavigationService initialisiert - saubere Interface-Trennung");
+ }
+
+ ///
+ /// Data Controller setzen (löst zirkuläre Abhängigkeit)
+ ///
+ public void SetDataController(PeriodensystemController dataController)
+ {
+ _dataController = dataController ?? throw new ArgumentNullException(nameof(dataController));
+ }
+
+ ///
+ /// Navigation zum Periodensystem (Interface Implementation)
+ ///
+ public void NavigateToPeriodicTable()
+ {
+ try
+ {
+ if (_dataController == null)
+ {
+ Logger.LogError("DataController nicht gesetzt");
+ return;
+ }
+
+ var periodicTablePage = new PeriodicTablePage();
+ periodicTablePage.SetController(_dataController);
+
+ _mainWindow.Content = periodicTablePage;
+ Logger.Log("NavigationService: Navigation zum Periodensystem");
+ }
+ catch (Exception ex)
+ {
+ Logger.LogException(ex, "NavigateToPeriodicTable");
+ }
+ }
+
+ ///
+ /// Navigation zur About-Seite (Interface Implementation)
+ ///
+ public void NavigateToAbout()
+ {
+ try
+ {
+ if (_dataController == null)
+ {
+ Logger.LogError("DataController nicht gesetzt");
+ return;
+ }
+
+ var aboutPage = new AboutPage();
+ aboutPage.SetController(_dataController);
+
+ _mainWindow.Content = aboutPage;
+ Logger.Log("NavigationService: Navigation zu About");
+ }
+ catch (Exception ex)
+ {
+ Logger.LogException(ex, "NavigateToAbout");
+ }
+ }
+
+ ///
+ /// Navigation zur Landing Page (Interface Implementation)
+ ///
+ public void NavigateToLanding()
+ {
+ try
+ {
+ if (_dataController == null)
+ {
+ Logger.LogError("DataController nicht gesetzt");
+ return;
+ }
+
+ var landingPage = new LandingPage();
+ landingPage.SetController(_dataController);
+
+ _mainWindow.Content = landingPage;
+ Logger.Log("NavigationService: Navigation zur Landing Page");
+ }
+ catch (Exception ex)
+ {
+ Logger.LogException(ex, "NavigateToLanding");
+ }
+ }
+
+ ///
+ /// Theme-Wechsel (Interface Implementation)
+ ///
+ public void ToggleTheme()
+ {
+ try
+ {
+ var app = Application.Current;
+ if (app != null)
+ {
+ var currentTheme = app.ActualThemeVariant;
+ var newTheme = currentTheme == Avalonia.Styling.ThemeVariant.Dark
+ ? Avalonia.Styling.ThemeVariant.Light
+ : Avalonia.Styling.ThemeVariant.Dark;
+
+ app.RequestedThemeVariant = newTheme;
+
+ // Settings speichern
+ var settings = new AppSettings
+ {
+ LastTheme = newTheme.ToString() ?? "Dark",
+ LastUsed = DateTime.Now,
+ PreferredLanguage = "German"
+ };
+ DataManager.SaveSettings(settings);
+
+ Logger.Log($"NavigationService: Theme gewechselt zu {newTheme}");
+ }
+ }
+ catch (Exception ex)
+ {
+ Logger.LogException(ex, "ToggleTheme");
+ }
+ }
+
+ ///
+ /// Export-Bestätigung anzeigen (Interface Implementation)
+ ///
+ public void ShowExportConfirmation()
+ {
+ try
+ {
+ Logger.Log("NavigationService: Export-Bestätigung angezeigt");
+ // Hier könnte ein Dialog oder Notification angezeigt werden
+ }
+ catch (Exception ex)
+ {
+ Logger.LogException(ex, "ShowExportConfirmation");
+ }
+ }
+ }
+}
diff --git a/Project_Periodensystem.View/PeriodicTablePage.axaml.cs b/Project_Periodensystem.View/PeriodicTablePage.axaml.cs
index 2b2127c..2f35c3c 100644
--- a/Project_Periodensystem.View/PeriodicTablePage.axaml.cs
+++ b/Project_Periodensystem.View/PeriodicTablePage.axaml.cs
@@ -18,20 +18,26 @@ namespace Project_Periodensystem.View
public partial class PeriodicTablePage : UserControl
{
private readonly Grid? periodicGrid;
- private readonly PeriodensystemController _controller;
+ private PeriodensystemController? _controller;
///
- /// Konstruktor - initialisiert UI und Controller
+ /// Konstruktor - initialisiert UI (Controller wird per SetController gesetzt)
///
public PeriodicTablePage()
{
InitializeComponent();
- // Controller initialisieren (MVC-Pattern)
- _controller = new PeriodensystemController();
-
// Grid-Referenz für Element-Buttons
periodicGrid = this.FindControl("PeriodicGrid");
+ }
+
+ ///
+ /// Controller setzen (Dependency Injection für MVC)
+ ///
+ public void SetController(PeriodensystemController controller)
+ {
+ _controller = controller ?? throw new ArgumentNullException(nameof(controller));
+ Logger.Log("PeriodicTablePage: Controller gesetzt (MVC-Pattern)");
// Elemente laden und anzeigen
LoadAndDisplayElements();
@@ -44,6 +50,12 @@ namespace Project_Periodensystem.View
{
try
{
+ if (_controller == null)
+ {
+ Logger.LogError("Controller nicht gesetzt - kann Elemente nicht laden");
+ return;
+ }
+
// Daten über Controller laden (nicht direkt!)
var elements = _controller.GetAllElements();
@@ -153,49 +165,48 @@ namespace Project_Periodensystem.View
}
///
- /// Event-Handler für Theme-Button
+ /// Event-Handler für Theme-Button - SAUBERES MVC
///
private void ThemeButton_Click(object? sender, RoutedEventArgs e)
{
try
{
- // Theme-Wechsel über Application
- var app = Application.Current;
- if (app != null)
+ if (_controller != null)
{
- var currentTheme = app.ActualThemeVariant;
- app.RequestedThemeVariant = currentTheme == Avalonia.Styling.ThemeVariant.Dark
- ? Avalonia.Styling.ThemeVariant.Light
- : Avalonia.Styling.ThemeVariant.Dark;
-
- Logger.Log($"Theme gewechselt zu: {app.RequestedThemeVariant}");
+ // Controller übernimmt Theme-Logik
+ _controller.HandleToggleTheme();
+ }
+ else
+ {
+ Logger.LogError("Controller nicht gesetzt - kann Theme nicht wechseln");
}
}
catch (Exception ex)
{
- Logger.Log($"Fehler beim Theme-Wechsel: {ex.Message}");
+ Logger.LogException(ex, "ThemeButton_Click");
}
}
///
- /// Event-Handler für About-Button
+ /// Event-Handler für About-Button - SAUBERES MVC
///
private void AboutButton_Click(object? sender, RoutedEventArgs e)
{
try
{
- // Navigation zur About-Seite
- var mainWindow = TopLevel.GetTopLevel(this) as Window;
- if (mainWindow != null)
+ if (_controller != null)
{
- var aboutPage = new AboutPage();
- mainWindow.Content = aboutPage;
- Logger.Log("Navigation zur About-Seite");
+ // Controller übernimmt Navigation
+ _controller.HandleNavigateToAbout();
+ }
+ else
+ {
+ Logger.LogError("Controller nicht gesetzt - kann nicht navigieren");
}
}
catch (Exception ex)
{
- Logger.Log($"Fehler bei Navigation zu About: {ex.Message}");
+ Logger.LogException(ex, "AboutButton_Click");
}
}
@@ -221,22 +232,25 @@ namespace Project_Periodensystem.View
}
///
- /// Export-Button für Element-Daten (NEUE FUNKTION)
+ /// Export-Button für Element-Daten - SAUBERES MVC
///
private void ExportButton_Click(object? sender, RoutedEventArgs e)
{
try
{
- var elements = _controller.GetAllElements();
- DataManager.SaveElements(elements);
- Logger.Log($"Export: {elements.Count} Elemente als JSON gespeichert");
-
- // Optional: Benutzer-Feedback
- // ShowMessage("Daten erfolgreich exportiert!");
+ if (_controller != null)
+ {
+ // Controller übernimmt Export-Logik
+ _controller.HandleExportData();
+ }
+ else
+ {
+ Logger.LogError("Controller nicht gesetzt - kann nicht exportieren");
+ }
}
catch (Exception ex)
{
- Logger.Log($"EXCEPTION in ExportButton_Click: {ex.Message}");
+ Logger.LogException(ex, "ExportButton_Click");
}
}
}
diff --git a/Project_Periodensystem.View/projektstruktur.txt b/Project_Periodensystem.View/projektstruktur.txt
deleted file mode 100644
index f56239e..0000000
--- a/Project_Periodensystem.View/projektstruktur.txt
+++ /dev/null
@@ -1,253 +0,0 @@
-Auflistung der Ordnerpfade
-Volumeseriennummer : 00C1-D40F
-C:.
-¦ AboutPage.axaml
-¦ AboutPage.axaml.cs
-¦ App.axaml
-¦ App.axaml.cs
-¦ app.manifest
-¦ LandingPage.axaml
-¦ LandingPage.axaml.cs
-¦ logger.cs
-¦ MainWindow.axaml
-¦ MainWindow.axaml.cs
-¦ PeriodicTablePage.axaml
-¦ PeriodicTablePage.axaml.cs
-¦ Program.cs
-¦ Project_Periodensystem.View.csproj
-¦ Project_Periodensystem.View.sln
-¦ projektstruktur.txt
-¦
-+---bin
-¦ +---Debug
-¦ +---net8.0
-¦ ¦ app_log.txt
-¦ ¦ Avalonia.Base.dll
-¦ ¦ Avalonia.Controls.ColorPicker.dll
-¦ ¦ Avalonia.Controls.DataGrid.dll
-¦ ¦ Avalonia.Controls.dll
-¦ ¦ Avalonia.DesignerSupport.dll
-¦ ¦ Avalonia.Desktop.dll
-¦ ¦ Avalonia.Diagnostics.dll
-¦ ¦ Avalonia.Dialogs.dll
-¦ ¦ Avalonia.dll
-¦ ¦ Avalonia.FreeDesktop.dll
-¦ ¦ Avalonia.Markup.dll
-¦ ¦ Avalonia.Markup.Xaml.dll
-¦ ¦ Avalonia.Metal.dll
-¦ ¦ Avalonia.MicroCom.dll
-¦ ¦ Avalonia.Native.dll
-¦ ¦ Avalonia.OpenGL.dll
-¦ ¦ Avalonia.ReactiveUI.dll
-¦ ¦ Avalonia.Remote.Protocol.dll
-¦ ¦ Avalonia.Skia.dll
-¦ ¦ Avalonia.Themes.Fluent.dll
-¦ ¦ Avalonia.Themes.Simple.dll
-¦ ¦ Avalonia.Win32.dll
-¦ ¦ Avalonia.X11.dll
-¦ ¦ DynamicData.dll
-¦ ¦ HarfBuzzSharp.dll
-¦ ¦ MicroCom.Runtime.dll
-¦ ¦ Microsoft.CodeAnalysis.CSharp.dll
-¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.dll
-¦ ¦ Microsoft.CodeAnalysis.dll
-¦ ¦ Microsoft.CodeAnalysis.Scripting.dll
-¦ ¦ Microsoft.Win32.SystemEvents.dll
-¦ ¦ Project_Periodensystem.Controller.dll
-¦ ¦ Project_Periodensystem.Controller.pdb
-¦ ¦ Project_Periodensystem.Model.dll
-¦ ¦ Project_Periodensystem.Model.pdb
-¦ ¦ Project_Periodensystem.Persistence.dll
-¦ ¦ Project_Periodensystem.Persistence.pdb
-¦ ¦ Project_Periodensystem.View.deps.json
-¦ ¦ Project_Periodensystem.View.dll
-¦ ¦ Project_Periodensystem.View.exe
-¦ ¦ Project_Periodensystem.View.pdb
-¦ ¦ Project_Periodensystem.View.runtimeconfig.json
-¦ ¦ ReactiveUI.dll
-¦ ¦ SkiaSharp.dll
-¦ ¦ Splat.dll
-¦ ¦ System.Drawing.Common.dll
-¦ ¦ System.IO.Pipelines.dll
-¦ ¦ System.Reactive.dll
-¦ ¦ Tmds.DBus.Protocol.dll
-¦ ¦
-¦ +---cs
-¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
-¦ ¦
-¦ +---de
-¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
-¦ ¦
-¦ +---es
-¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
-¦ ¦
-¦ +---fr
-¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
-¦ ¦
-¦ +---it
-¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
-¦ ¦
-¦ +---ja
-¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
-¦ ¦
-¦ +---ko
-¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
-¦ ¦
-¦ +---pl
-¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
-¦ ¦
-¦ +---pt-BR
-¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
-¦ ¦
-¦ +---ru
-¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
-¦ ¦
-¦ +---runtimes
-¦ ¦ +---linux-arm
-¦ ¦ ¦ +---native
-¦ ¦ ¦ libHarfBuzzSharp.so
-¦ ¦ ¦ libSkiaSharp.so
-¦ ¦ ¦
-¦ ¦ +---linux-arm64
-¦ ¦ ¦ +---native
-¦ ¦ ¦ libHarfBuzzSharp.so
-¦ ¦ ¦ libSkiaSharp.so
-¦ ¦ ¦
-¦ ¦ +---linux-musl-x64
-¦ ¦ ¦ +---native
-¦ ¦ ¦ libHarfBuzzSharp.so
-¦ ¦ ¦ libSkiaSharp.so
-¦ ¦ ¦
-¦ ¦ +---linux-x64
-¦ ¦ ¦ +---native
-¦ ¦ ¦ libHarfBuzzSharp.so
-¦ ¦ ¦ libSkiaSharp.so
-¦ ¦ ¦
-¦ ¦ +---osx
-¦ ¦ ¦ +---native
-¦ ¦ ¦ libAvaloniaNative.dylib
-¦ ¦ ¦ libHarfBuzzSharp.dylib
-¦ ¦ ¦ libSkiaSharp.dylib
-¦ ¦ ¦
-¦ ¦ +---unix
-¦ ¦ ¦ +---lib
-¦ ¦ ¦ +---net6.0
-¦ ¦ ¦ System.Drawing.Common.dll
-¦ ¦ ¦
-¦ ¦ +---win
-¦ ¦ ¦ +---lib
-¦ ¦ ¦ +---net6.0
-¦ ¦ ¦ Microsoft.Win32.SystemEvents.dll
-¦ ¦ ¦ System.Drawing.Common.dll
-¦ ¦ ¦
-¦ ¦ +---win-arm64
-¦ ¦ ¦ +---native
-¦ ¦ ¦ av_libglesv2.dll
-¦ ¦ ¦ libHarfBuzzSharp.dll
-¦ ¦ ¦ libSkiaSharp.dll
-¦ ¦ ¦
-¦ ¦ +---win-x64
-¦ ¦ ¦ +---native
-¦ ¦ ¦ av_libglesv2.dll
-¦ ¦ ¦ libHarfBuzzSharp.dll
-¦ ¦ ¦ libSkiaSharp.dll
-¦ ¦ ¦
-¦ ¦ +---win-x86
-¦ ¦ +---native
-¦ ¦ av_libglesv2.dll
-¦ ¦ libHarfBuzzSharp.dll
-¦ ¦ libSkiaSharp.dll
-¦ ¦
-¦ +---tr
-¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
-¦ ¦
-¦ +---zh-Hans
-¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.resources.dll
-¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
-¦ ¦
-¦ +---zh-Hant
-¦ Microsoft.CodeAnalysis.CSharp.resources.dll
-¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
-¦ Microsoft.CodeAnalysis.resources.dll
-¦ Microsoft.CodeAnalysis.Scripting.resources.dll
-¦
-+---Components
-¦ ElementTile.axaml
-¦ ElementTile.axaml.cs
-¦
-+---Converters
-¦ GridPositionConverters.cs
-¦ SeriesToColorConverter.cs
-¦
-+---obj
- ¦ project.assets.json
- ¦ project.nuget.cache
- ¦ Project_Periodensystem.View.csproj.nuget.dgspec.json
- ¦ Project_Periodensystem.View.csproj.nuget.g.props
- ¦ Project_Periodensystem.View.csproj.nuget.g.targets
- ¦
- +---Debug
- +---net8.0
- ¦ .NETCoreApp,Version=v8.0.AssemblyAttributes.cs
- ¦ apphost.exe
- ¦ Project_.29B724C0.Up2Date
- ¦ Project_Periodensystem.View.AssemblyInfo.cs
- ¦ Project_Periodensystem.View.AssemblyInfoInputs.cache
- ¦ Project_Periodensystem.View.assets.cache
- ¦ Project_Periodensystem.View.csproj.AssemblyReference.cache
- ¦ Project_Periodensystem.View.csproj.CoreCompileInputs.cache
- ¦ Project_Periodensystem.View.csproj.FileListAbsolute.txt
- ¦ Project_Periodensystem.View.dll
- ¦ Project_Periodensystem.View.GeneratedMSBuildEditorConfig.editorconfig
- ¦ Project_Periodensystem.View.genruntimeconfig.cache
- ¦ Project_Periodensystem.View.pdb
- ¦
- +---Avalonia
- ¦ original.dll
- ¦ original.pdb
- ¦ original.ref.dll
- ¦ references
- ¦ resources
- ¦ Resources.Inputs.cache
- ¦
- +---ref
- ¦ Project_Periodensystem.View.dll
- ¦
- +---refint
- Project_Periodensystem.View.dll
-