2011-10-04 6 views
0

J'ai un contrôle d'utilisateur WPF, dans lequel j'ai un StackPanel. Pour ce panneau J'ajoute une étiquette programatically cette façon (Container est le nom de StackPanel):Comment déterminer quel contrôle a été cliqué dans WPF UserControl?

public void Insert(string Value) 
{ 
    Label l = new Label(); 
    l.Content = Value; 
    Container.Children.Add(l); 
} 

Maintenant, je veux fournir un événement public SelectedIndexChange, lorsque l'utilisateur clique sur l'étiquette. Maintenant, j'ai un problème comment déterminer quel label a été cliqué. Quelqu'un peut-il aider?

Répondre

1

Si dans Insert vous ajoutez la ligne:

l.Click += ClickHandler; 

alors le premier argument de clickHandler sera le contrôle qui a déclenché l'événement Click.

par exemple. Si votre gestionnaire est:

private void ClickHandler(object sender, RoutedEventArgs e){...}; 

alors sender aura l'étiquette qui a été cliqué. Vous pouvez également consulter e.OriginalSource.

+0

Pas solution exacte, mais bon point en utilisant l'expéditeur. – deha

0

Je suppose que vous pouvez utiliser ce code

l.MouseClick+= MouseClickHandler; 

et de basculer entre Lables

Exemple:

private void label1_MouseDown(object sender, MouseButtonEventArgs e) 
     { 
      if (e.LeftButton== MouseButtonState.Pressed) 
      { 
       Label l = (Label)e.Source; 
       switch (l.Name) 
       { 
        case "lable1": 
         int a = 10; 
         break; 
       } 
      } 
     } 
Questions connexes