Création d'un pense-bête wpf

Signaler
Messages postés
2
Date d'inscription
mardi 17 juillet 2012
Statut
Membre
Dernière intervention
26 juillet 2012
-
Bonjour à tous,
je début en dev windows et j'ai un petit problème en essayant de créer un système de pense-bête pour mon application wpf.
J'ai divisé une page en 2 et dans la partie de gauche j'ai rajouté un bouton qui permet d'ajouter un pense-bête à chaque clique.
Ce pense-bête doit être "Draggeable" à la souris.
Voici mon code xaml de la fenêtre :

























Le Template du pense-bête est dans un fichier de ressource :




















Ici le code du control qui nommé "PenseBete.cs" :

[TemplatePart(Name = "PART_Draggeable", Type = typeof(Thumb))]
public class PenseBete : ContentControl
{
public override void OnApplyTemplate()
{
base.OnApplyTemplate();

Thumb MyThumb = this.Template.FindName("PART_Draggeable", this) as Thumb;

if (MyThumb != null)
{
MyThumb.DragDelta += new DragDeltaEventHandler(Thumb_DragDelta);
}
}

private void Thumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
{
double __left = Canvas.GetLeft(this) + e.HorizontalChange;
double __top = Canvas.GetTop(this) + e.VerticalChange;
Canvas.SetLeft(this, __left);
Canvas.SetTop(this, __top);
}
}

Mon problème : comment ajouter un nouveau pense-bête à chaque fois que l'utilisateur clique sur le bouton ?
J'ai essayé d'écrire ça dans le mainWindow.cs :


public static RoutedCommand AddPenseBeteCommand = new RoutedCommand("AddPenseBeteCommand", typeof(MainWindow));
public static ExecutedRoutedEventHandler AddPenseBeteCommandExecuted;


public Page1_Journal()
{
this.InitializeComponent();
}

public void AddPenseBeteCommand_Executed(object sender, ExecutedRoutedEventArgs e)
{
PenseBete penseBete = this.TryFindResource("InstancePenseBete") as PenseBete;
if(!this.Canvas_PB.Children.Contains(penseBete))
this.Canvas_PB.Children.Add(penseBete);
else
{
Canvas canvas = new Canvas();
this.grille_gauche.Children.Add(canvas);
canvas.ClipToBounds = true;
canvas.Margin = this.Canvas_PB.Margin;
PenseBete penseBete2 = new PenseBete();
canvas.Children.Add(penseBete2);
}
}


Mais à partir du deuxième pense-bête crée avec PenseBete penseBete2 = new PenseBete(); ils sont plus draggeable...

Merci d'avance, j'espère avoir réussi à me faire comprendre !