using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace TestProject { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { MainController controller; public MainWindow() { InitializeComponent(); //this ist immer das Objekt, indem man sich gerade befindet controller = new(this); } //Diese Methode fügt eine übergebene Liste von Karten in die GUI ein. public void InsertCardsIntoGui(List cardList) { //Zuerst wird das Feld geleert mainWrapPanel.Children.Clear(); //Danach wird jedes übergebene Kartenobjekt in die GUI eingefügt foreach (var element in cardList) InsertKarteInGui(element); } //Fügt die Karte in die GUI ein void InsertKarteInGui(Karte k) { //Das ist der Rand außen rum, der für das Markieren zuständig ist Border border = new(); //Dies ist das Bild, das angezeigt wird Image image = new(); //Sollte das Objekt schon ausgewählt sein, muss man den Rahmen setzen if (k.IsChecked) { border.BorderThickness = new(3); border.BorderBrush = Brushes.Crimson; //Hier wird das Bild gesetzt var converter = new ImageSourceConverter(); image.Source = (ImageSource)(converter.ConvertFromString(k.Bild) ?? new()); } else { //Hier wird die Rückseite gesetzt var converter = new ImageSourceConverter(); image.Source = (ImageSource)(converter.ConvertFromString(@"C:\Users\s.schueler.doz\Pictures\back.jpg") ?? new()); } //Hier wird das Event gesetzt, wenn wer auf das Bild klickt image.MouseLeftButtonUp += Image_MouseLeftButtonUp; //Hier werden die Höhe und die Seitenabstände definiert image.Height = 100; image.Margin = new(5); //Hier wird die individuelle ID gesetzt image.Tag = k.IndividualID; //Der Border wird dann das Bild hinzugefügt border.Child = image; //Dem WrapPanel wird dann die Border hinzugefügt und somit in der GUI sichtbar mainWrapPanel.Children.Add(border); } //Behandelt den Klick auf eine Karte private void Image_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { //Wir holen und zuerst das Image Image i = (Image)sender; //Dann teilen wir dem Controller mit, dass auf dieses Objekt geklickt wurde. Dabei verwenden wir die individuelle ID aus dem Tag. controller.ClickOnCard((int)i.Tag); } } }