Neuer commit ohne Changes
This commit is contained in:
parent
f3588f2b25
commit
b35804f547
17
Project_Periodensystem.Controller/INavigationService.cs
Normal file
17
Project_Periodensystem.Controller/INavigationService.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Project_Periodensystem.Controller
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Interface für Navigation - trennt Controller von UI-Dependencies
|
||||||
|
/// Controller definiert WAS navigiert wird, View definiert WIE
|
||||||
|
/// </summary>
|
||||||
|
public interface INavigationService
|
||||||
|
{
|
||||||
|
void NavigateToPeriodicTable();
|
||||||
|
void NavigateToAbout();
|
||||||
|
void NavigateToLanding();
|
||||||
|
void ToggleTheme();
|
||||||
|
void ShowExportConfirmation();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -9,17 +9,22 @@ namespace Project_Periodensystem.Controller
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Controller für das Periodensystem - verwaltet die Geschäftslogik
|
/// Controller für das Periodensystem - verwaltet die Geschäftslogik
|
||||||
/// und trennt View von Model gemäß MVC-Pattern
|
/// und trennt View von Model gemäß MVC-Pattern
|
||||||
|
/// SAUBERE ARCHITEKTUR: Verwendet Interface für Navigation
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class PeriodensystemController
|
public class PeriodensystemController
|
||||||
{
|
{
|
||||||
// Nullable Field um Warning zu vermeiden
|
// Nullable Field um Warning zu vermeiden
|
||||||
private List<Element> _elements = new List<Element>();
|
private List<Element> _elements = new List<Element>();
|
||||||
|
|
||||||
|
// Navigation Service Interface (KEINE direkte UI-Dependency!)
|
||||||
|
private readonly INavigationService? _navigationService;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Konstruktor - initialisiert den Controller
|
/// Konstruktor - optional mit Navigation Service
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public PeriodensystemController()
|
public PeriodensystemController(INavigationService? navigationService = null)
|
||||||
{
|
{
|
||||||
|
_navigationService = navigationService;
|
||||||
LoadElements();
|
LoadElements();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -346,5 +351,91 @@ namespace Project_Periodensystem.Controller
|
|||||||
|
|
||||||
return (lightest, heaviest);
|
return (lightest, heaviest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ===== NAVIGATION CONTROLLER METHODS (SAUBERES MVC MIT INTERFACE) =====
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Behandelt Navigation zum Periodensystem (Controller-Logic)
|
||||||
|
/// </summary>
|
||||||
|
public void HandleNavigateToPeriodicTable()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Logger.Log("Controller: Navigation zum Periodensystem angefordert");
|
||||||
|
_navigationService?.NavigateToPeriodicTable();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.LogException(ex, "HandleNavigateToPeriodicTable");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Behandelt Navigation zur About-Seite (Controller-Logic)
|
||||||
|
/// </summary>
|
||||||
|
public void HandleNavigateToAbout()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Logger.Log("Controller: Navigation zu About angefordert");
|
||||||
|
_navigationService?.NavigateToAbout();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.LogException(ex, "HandleNavigateToAbout");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Behandelt Navigation zur Landing Page (Controller-Logic)
|
||||||
|
/// </summary>
|
||||||
|
public void HandleNavigateToLanding()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Logger.Log("Controller: Navigation zur Landing Page angefordert");
|
||||||
|
_navigationService?.NavigateToLanding();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.LogException(ex, "HandleNavigateToLanding");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Behandelt Theme-Wechsel (Controller-Logic)
|
||||||
|
/// </summary>
|
||||||
|
public void HandleToggleTheme()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Logger.Log("Controller: Theme-Wechsel angefordert");
|
||||||
|
_navigationService?.ToggleTheme();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.LogException(ex, "HandleToggleTheme");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Behandelt Daten-Export (Controller-Logic)
|
||||||
|
/// </summary>
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,14 +5,17 @@ using Avalonia.Interactivity;
|
|||||||
using Avalonia.Markup.Xaml;
|
using Avalonia.Markup.Xaml;
|
||||||
using Avalonia.VisualTree;
|
using Avalonia.VisualTree;
|
||||||
using Project_Periodensystem.Model;
|
using Project_Periodensystem.Model;
|
||||||
|
using Project_Periodensystem.Controller;
|
||||||
|
|
||||||
namespace Project_Periodensystem.View
|
namespace Project_Periodensystem.View
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Code-Behind für die About-Seite
|
/// Code-Behind für die About-Seite - SAUBERES MVC
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class AboutPage : UserControl
|
public partial class AboutPage : UserControl
|
||||||
{
|
{
|
||||||
|
private PeriodensystemController? _controller;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Konstruktor
|
/// Konstruktor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -21,54 +24,63 @@ namespace Project_Periodensystem.View
|
|||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Controller setzen (Dependency Injection für MVC)
|
||||||
|
/// </summary>
|
||||||
|
public void SetController(PeriodensystemController controller)
|
||||||
|
{
|
||||||
|
_controller = controller ?? throw new ArgumentNullException(nameof(controller));
|
||||||
|
Logger.Log("AboutPage: Controller gesetzt (MVC-Pattern)");
|
||||||
|
}
|
||||||
|
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
AvaloniaXamlLoader.Load(this);
|
AvaloniaXamlLoader.Load(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Zurück-Button - Navigation zur Landing Page
|
/// Zurück-Button - Navigation zur Landing Page - SAUBERES MVC
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void BackButton_Click(object? sender, RoutedEventArgs e)
|
private void BackButton_Click(object? sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var mainWindow = TopLevel.GetTopLevel(this) as Window;
|
if (_controller != null)
|
||||||
if (mainWindow != null)
|
|
||||||
{
|
{
|
||||||
var landingPage = new LandingPage();
|
// Controller übernimmt Navigation
|
||||||
mainWindow.Content = landingPage;
|
_controller.HandleNavigateToLanding();
|
||||||
Logger.Log("Navigation zurück zur Landing Page");
|
}
|
||||||
|
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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Event-Handler für Theme-Button - VEREINHEITLICHT mit anderen Seiten
|
/// Event-Handler für Theme-Button - SAUBERES MVC
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void ThemeButton_Click(object? sender, RoutedEventArgs e)
|
private void ThemeButton_Click(object? sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// GLEICHE LOGIK wie auf LandingPage und PeriodicTablePage
|
if (_controller != null)
|
||||||
var app = Application.Current;
|
|
||||||
if (app != null)
|
|
||||||
{
|
{
|
||||||
var currentTheme = app.ActualThemeVariant;
|
// Controller übernimmt Theme-Logik
|
||||||
app.RequestedThemeVariant = currentTheme == Avalonia.Styling.ThemeVariant.Dark
|
_controller.HandleToggleTheme();
|
||||||
? Avalonia.Styling.ThemeVariant.Light
|
}
|
||||||
: Avalonia.Styling.ThemeVariant.Dark;
|
else
|
||||||
|
{
|
||||||
Logger.Log($"Theme gewechselt zu: {app.RequestedThemeVariant}");
|
Logger.LogError("Controller nicht gesetzt - kann Theme nicht wechseln");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.Log($"Fehler beim Theme-Wechsel: {ex.Message}");
|
Logger.LogException(ex, "ThemeButton_Click");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,14 +4,18 @@ using Avalonia.Controls;
|
|||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
using Project_Periodensystem.Model;
|
using Project_Periodensystem.Model;
|
||||||
using Project_Periodensystem.Persistence;
|
using Project_Periodensystem.Persistence;
|
||||||
|
using Project_Periodensystem.Controller;
|
||||||
|
|
||||||
namespace Project_Periodensystem.View
|
namespace Project_Periodensystem.View
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Code-Behind für die Landing Page
|
/// Code-Behind für die Landing Page - SAUBERES MVC
|
||||||
|
/// Keine direkte Navigation mehr, nur Controller-Aufrufe
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class LandingPage : UserControl
|
public partial class LandingPage : UserControl
|
||||||
{
|
{
|
||||||
|
private PeriodensystemController? _controller;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Konstruktor
|
/// Konstruktor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -21,84 +25,80 @@ namespace Project_Periodensystem.View
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Event-Handler für Periodensystem-Button
|
/// Controller setzen (Dependency Injection für MVC)
|
||||||
|
/// </summary>
|
||||||
|
public void SetController(PeriodensystemController controller)
|
||||||
|
{
|
||||||
|
_controller = controller ?? throw new ArgumentNullException(nameof(controller));
|
||||||
|
Logger.Log("LandingPage: Controller gesetzt (MVC-Pattern)");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Event-Handler für Periodensystem-Button - SAUBERES MVC
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void PeriodicTableButton_Click(object? sender, RoutedEventArgs e)
|
private void PeriodicTableButton_Click(object? sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var mainWindow = TopLevel.GetTopLevel(this) as Window;
|
if (_controller != null)
|
||||||
if (mainWindow != null)
|
|
||||||
{
|
{
|
||||||
var periodicTablePage = new PeriodicTablePage();
|
// Controller übernimmt Navigation (kein direkter View-Zugriff!)
|
||||||
mainWindow.Content = periodicTablePage;
|
_controller.HandleNavigateToPeriodicTable();
|
||||||
Logger.Log("Navigation zum Periodensystem");
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Logger.LogError("Controller nicht gesetzt - kann nicht navigieren");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.Log($"Fehler bei Navigation zum Periodensystem: {ex.Message}");
|
Logger.LogException(ex, "PeriodicTableButton_Click");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Event-Handler für About-Button
|
/// Event-Handler für About-Button - SAUBERES MVC
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void AboutButton_Click(object? sender, RoutedEventArgs e)
|
private void AboutButton_Click(object? sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var mainWindow = TopLevel.GetTopLevel(this) as Window;
|
if (_controller != null)
|
||||||
if (mainWindow != null)
|
|
||||||
{
|
{
|
||||||
var aboutPage = new AboutPage();
|
// Controller übernimmt Navigation
|
||||||
mainWindow.Content = aboutPage;
|
_controller.HandleNavigateToAbout();
|
||||||
Logger.Log("Navigation zur About-Seite");
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Logger.LogError("Controller nicht gesetzt - kann nicht navigieren");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.Log($"Fehler bei Navigation zu About: {ex.Message}");
|
Logger.LogException(ex, "AboutButton_Click");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Event-Handler für Theme-Button (MIT SETTINGS-SPEICHERUNG)
|
/// Event-Handler für Theme-Button - SAUBERES MVC
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void ThemeButton_Click(object? sender, RoutedEventArgs e)
|
private void ThemeButton_Click(object? sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Logger.Log("Theme-Button geklickt");
|
if (_controller != null)
|
||||||
|
|
||||||
var app = Application.Current;
|
|
||||||
if (app != null)
|
|
||||||
{
|
{
|
||||||
var currentTheme = app.ActualThemeVariant;
|
// Controller übernimmt Theme-Logik
|
||||||
Logger.Log($"Aktuelles Theme: {currentTheme}");
|
_controller.HandleToggleTheme();
|
||||||
|
|
||||||
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");
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Logger.Log("Application.Current ist null!");
|
Logger.LogError("Controller nicht gesetzt - kann Theme nicht wechseln");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.Log($"EXCEPTION in ThemeButton_Click: {ex.Message}");
|
Logger.LogException(ex, "ThemeButton_Click");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,20 +1,34 @@
|
|||||||
using Avalonia;
|
using Avalonia;
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
using Project_Periodensystem.Model;
|
using Project_Periodensystem.Model;
|
||||||
|
using Project_Periodensystem.Controller;
|
||||||
|
|
||||||
namespace Project_Periodensystem.View
|
namespace Project_Periodensystem.View
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Vereinfachtes MainWindow - nur noch Container für Content
|
/// MainWindow mit sauberem MVC-Pattern und Interface-basierter Navigation
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class MainWindow : Window
|
public partial class MainWindow : Window
|
||||||
{
|
{
|
||||||
private ContentControl? mainContent;
|
private ContentControl? mainContent;
|
||||||
|
private readonly PeriodensystemController _dataController;
|
||||||
|
private readonly NavigationService _navigationService;
|
||||||
|
|
||||||
public MainWindow()
|
public MainWindow()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
mainContent = this.FindControl<ContentControl>("MainContent");
|
mainContent = this.FindControl<ContentControl>("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();
|
ShowLandingPage();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -25,41 +39,21 @@ namespace Project_Periodensystem.View
|
|||||||
{
|
{
|
||||||
if (mainContent != null)
|
if (mainContent != null)
|
||||||
{
|
{
|
||||||
mainContent.Content = new LandingPage();
|
var landingPage = new LandingPage();
|
||||||
Logger.Log("Landing Page angezeigt");
|
landingPage.SetController(_dataController);
|
||||||
|
|
||||||
|
mainContent.Content = landingPage;
|
||||||
|
Logger.Log("Landing Page angezeigt (mit Interface-basierter Navigation)");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Zeigt das Periodensystem an
|
/// Cleanup beim Schließen
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void ShowPeriodicTable()
|
protected override void OnClosed(System.EventArgs e)
|
||||||
{
|
{
|
||||||
Logger.Log("ShowPeriodicTable called");
|
// NavigationService implementiert kein IDisposable mehr (keine Events)
|
||||||
try
|
base.OnClosed(e);
|
||||||
{
|
|
||||||
if (mainContent != null)
|
|
||||||
{
|
|
||||||
mainContent.Content = new PeriodicTablePage();
|
|
||||||
Logger.Log("PeriodicTablePage created and set");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (System.Exception ex)
|
|
||||||
{
|
|
||||||
Logger.Log($"Error in ShowPeriodicTable: {ex.Message}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Zeigt die About Page an
|
|
||||||
/// </summary>
|
|
||||||
public void ShowAboutPage()
|
|
||||||
{
|
|
||||||
if (mainContent != null)
|
|
||||||
{
|
|
||||||
mainContent.Content = new AboutPage();
|
|
||||||
Logger.Log("About Page angezeigt");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
163
Project_Periodensystem.View/NavigationService.cs
Normal file
163
Project_Periodensystem.View/NavigationService.cs
Normal file
@ -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
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Navigation Service Implementation im View-Layer
|
||||||
|
/// Implementiert INavigationService Interface vom Controller
|
||||||
|
/// SAUBERE TRENNUNG: Controller definiert WAS, View definiert WIE
|
||||||
|
/// </summary>
|
||||||
|
public class NavigationService : INavigationService
|
||||||
|
{
|
||||||
|
private readonly Window _mainWindow;
|
||||||
|
private PeriodensystemController? _dataController;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Konstruktor
|
||||||
|
/// </summary>
|
||||||
|
public NavigationService(Window mainWindow)
|
||||||
|
{
|
||||||
|
_mainWindow = mainWindow ?? throw new ArgumentNullException(nameof(mainWindow));
|
||||||
|
Logger.Log("NavigationService initialisiert - saubere Interface-Trennung");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Data Controller setzen (löst zirkuläre Abhängigkeit)
|
||||||
|
/// </summary>
|
||||||
|
public void SetDataController(PeriodensystemController dataController)
|
||||||
|
{
|
||||||
|
_dataController = dataController ?? throw new ArgumentNullException(nameof(dataController));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Navigation zum Periodensystem (Interface Implementation)
|
||||||
|
/// </summary>
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Navigation zur About-Seite (Interface Implementation)
|
||||||
|
/// </summary>
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Navigation zur Landing Page (Interface Implementation)
|
||||||
|
/// </summary>
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Theme-Wechsel (Interface Implementation)
|
||||||
|
/// </summary>
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Export-Bestätigung anzeigen (Interface Implementation)
|
||||||
|
/// </summary>
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -18,20 +18,26 @@ namespace Project_Periodensystem.View
|
|||||||
public partial class PeriodicTablePage : UserControl
|
public partial class PeriodicTablePage : UserControl
|
||||||
{
|
{
|
||||||
private readonly Grid? periodicGrid;
|
private readonly Grid? periodicGrid;
|
||||||
private readonly PeriodensystemController _controller;
|
private PeriodensystemController? _controller;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Konstruktor - initialisiert UI und Controller
|
/// Konstruktor - initialisiert UI (Controller wird per SetController gesetzt)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public PeriodicTablePage()
|
public PeriodicTablePage()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
// Controller initialisieren (MVC-Pattern)
|
|
||||||
_controller = new PeriodensystemController();
|
|
||||||
|
|
||||||
// Grid-Referenz für Element-Buttons
|
// Grid-Referenz für Element-Buttons
|
||||||
periodicGrid = this.FindControl<Grid>("PeriodicGrid");
|
periodicGrid = this.FindControl<Grid>("PeriodicGrid");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Controller setzen (Dependency Injection für MVC)
|
||||||
|
/// </summary>
|
||||||
|
public void SetController(PeriodensystemController controller)
|
||||||
|
{
|
||||||
|
_controller = controller ?? throw new ArgumentNullException(nameof(controller));
|
||||||
|
Logger.Log("PeriodicTablePage: Controller gesetzt (MVC-Pattern)");
|
||||||
|
|
||||||
// Elemente laden und anzeigen
|
// Elemente laden und anzeigen
|
||||||
LoadAndDisplayElements();
|
LoadAndDisplayElements();
|
||||||
@ -44,6 +50,12 @@ namespace Project_Periodensystem.View
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
if (_controller == null)
|
||||||
|
{
|
||||||
|
Logger.LogError("Controller nicht gesetzt - kann Elemente nicht laden");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Daten über Controller laden (nicht direkt!)
|
// Daten über Controller laden (nicht direkt!)
|
||||||
var elements = _controller.GetAllElements();
|
var elements = _controller.GetAllElements();
|
||||||
|
|
||||||
@ -153,49 +165,48 @@ namespace Project_Periodensystem.View
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Event-Handler für Theme-Button
|
/// Event-Handler für Theme-Button - SAUBERES MVC
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void ThemeButton_Click(object? sender, RoutedEventArgs e)
|
private void ThemeButton_Click(object? sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Theme-Wechsel über Application
|
if (_controller != null)
|
||||||
var app = Application.Current;
|
|
||||||
if (app != null)
|
|
||||||
{
|
{
|
||||||
var currentTheme = app.ActualThemeVariant;
|
// Controller übernimmt Theme-Logik
|
||||||
app.RequestedThemeVariant = currentTheme == Avalonia.Styling.ThemeVariant.Dark
|
_controller.HandleToggleTheme();
|
||||||
? Avalonia.Styling.ThemeVariant.Light
|
}
|
||||||
: Avalonia.Styling.ThemeVariant.Dark;
|
else
|
||||||
|
{
|
||||||
Logger.Log($"Theme gewechselt zu: {app.RequestedThemeVariant}");
|
Logger.LogError("Controller nicht gesetzt - kann Theme nicht wechseln");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.Log($"Fehler beim Theme-Wechsel: {ex.Message}");
|
Logger.LogException(ex, "ThemeButton_Click");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Event-Handler für About-Button
|
/// Event-Handler für About-Button - SAUBERES MVC
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void AboutButton_Click(object? sender, RoutedEventArgs e)
|
private void AboutButton_Click(object? sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Navigation zur About-Seite
|
if (_controller != null)
|
||||||
var mainWindow = TopLevel.GetTopLevel(this) as Window;
|
|
||||||
if (mainWindow != null)
|
|
||||||
{
|
{
|
||||||
var aboutPage = new AboutPage();
|
// Controller übernimmt Navigation
|
||||||
mainWindow.Content = aboutPage;
|
_controller.HandleNavigateToAbout();
|
||||||
Logger.Log("Navigation zur About-Seite");
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Logger.LogError("Controller nicht gesetzt - kann nicht navigieren");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
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
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Export-Button für Element-Daten (NEUE FUNKTION)
|
/// Export-Button für Element-Daten - SAUBERES MVC
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void ExportButton_Click(object? sender, RoutedEventArgs e)
|
private void ExportButton_Click(object? sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var elements = _controller.GetAllElements();
|
if (_controller != null)
|
||||||
DataManager.SaveElements(elements);
|
{
|
||||||
Logger.Log($"Export: {elements.Count} Elemente als JSON gespeichert");
|
// Controller übernimmt Export-Logik
|
||||||
|
_controller.HandleExportData();
|
||||||
// Optional: Benutzer-Feedback
|
}
|
||||||
// ShowMessage("Daten erfolgreich exportiert!");
|
else
|
||||||
|
{
|
||||||
|
Logger.LogError("Controller nicht gesetzt - kann nicht exportieren");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.Log($"EXCEPTION in ExportButton_Click: {ex.Message}");
|
Logger.LogException(ex, "ExportButton_Click");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user