83 lines
3.1 KiB
C#
83 lines
3.1 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for MainWindow.xaml
|
|
/// </summary>
|
|
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<Karte> 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);
|
|
|
|
}
|
|
}
|
|
} |