You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CShark/WpfApp1/UserControlRequin.xaml.cs

147 lines
4.6 KiB

using Business;
using Modèle;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 WpfApp1
{
/// <summary>
/// Classe DescriptionWeGoEventArgs qui implémente EventArgs
/// Elle permet de créer un argument qui permet de transformer le content control de la main window en USerControlDescription après avoir cliquer sur le UserControlRequin
/// </summary>
public class DescriptionWeGoEventArgs : EventArgs
{
/// <summary>
/// Le requin que l'on veut passer lors de l'événement
/// </summary>
public Requin Requin { get; private set; }
/// <summary>
/// L'Evénement pour changer le content control en UserControlDescription
/// </summary>
/// <param name="requin"></param>
public DescriptionWeGoEventArgs(Requin requin) => Requin = requin;
}
/// <summary>
/// Logique d'interaction pour UserControlRequin.xaml
/// </summary>
public partial class UserControlRequin : UserControl
{
/// <summary>
/// Manager lié à celui de l'app
/// </summary>
public Manager Mgr => (Application.Current as App).LeManager;
/// <summary>
/// Le UserControl qui est stocké dans une listBox et permet d'ouvrir les pages de description
/// </summary>
public UserControlRequin()
{
InitializeComponent();
}
/// <summary>
/// Event Handler de DescriptionWeGoEventArgs
/// </summary>
public event EventHandler<DescriptionWeGoEventArgs> DescriptionWeGo;
/// <summary>
/// L'événement qui permet de passer à l'UserControlDescription
/// </summary>
/// <param name="args"></param>
protected virtual void OnDescriptionWeGo(DescriptionWeGoEventArgs args)
=> DescriptionWeGo?.Invoke(this, args);
/// <summary>
/// Evénement qui est déclencher quand l'utilisateur clique sur l'userControl
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void UserControlReq_MouseDown(object sender, MouseButtonEventArgs e)
{
Mgr.SelectedRequin = requin;
if (type == UCrequinType.normal)
{
OnDescriptionWeGo(new DescriptionWeGoEventArgs(requin)); //Déclenche l'événement OnDescriptionWeGo
}
else if (type == UCrequinType.edit)
{
var descEdit = new DescriptionEdit { requin = requin, requinOld = Mgr.GetRequin(requin) }; //Ouvre la page DescriptionEdit
descEdit.ShowDialog();
}
else if (type == UCrequinType.add)
{
var descAdd = new DescriptionAdd { requin = requin }; //Ouvre la page DescriptionAdd
descAdd.ShowDialog();
}
}
private Requin _requin;
/// <summary>
/// Le requin qui permet de mettre à jour l'affichage
/// </summary>
public Requin requin
{
get { return _requin; }
set {
_requin = value;
uptadeUi(_requin);
}
}
/// <summary>
/// Le type d'userControl requi que c'est (permet de savoir quelle description ouvrir)
/// </summary>
public UCrequinType type;
/// <summary>
/// Méthode qui permet de mettre à jour l'affichage de l'userControl
/// </summary>
/// <param name="requin"></param>
public void uptadeUi(Requin requin)
{
nameReq.Text = requin.Nom;
sciName.Text = requin.NomSci;
var url = "@" + requin.Photo;
//Test si l'image viens du dossier Image ou d'internet
if (requin.Photo.Contains("Images/"))
{
image.Source = new BitmapImage(new Uri(requin.Photo, UriKind.Relative));
}
else
{
var pathPhoto = @requin.Photo;
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new Uri(pathPhoto, UriKind.Absolute);
bitmap.EndInit();
image.Source = bitmap;
}
}
}
}