2010-09-30 5 views
2

Pour être plus clair. J'ai besoin de savoir quel élément a attiré l'attention dans l'événement ciblé LostFocus. Quelque chose comme ceci:Obtenir l'élément qui a volé le focus avant WPF

  • J'ai 3 boutons: A, B et C
  • "Bouton A" a le focus
  • "Bouton C" est cliqué
  • "Bouton Un" événement LostFocus est déclenché
  • Dans là, je veux savoir que « Bouton C » a volé la mise au point (aurait pu aussi « Bouton B »)

Permettez-moi de savoir s'il y a un moyen d'y arriver.

Merci!

Répondre

4

Vous pouvez toujours vérifier le FocusManager.GetFocusedElement (dObj) pour obtenir l'élément focus dans un DependencyObject donné. Donc, dans votre scénario ci-dessus, ce sera quelque chose comme ceci:

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <Style TargetType="Button"> 
      <EventSetter Event="LostFocus" Handler="OnLostFocus"/> 
     </Style> 
    </Window.Resources> 

    <StackPanel> 
     <Button>Button1</Button> 
     <Button>Button2</Button> 
     <Button>Button3</Button> 
    </StackPanel> 
</Window> 

Gestionnaire de l'événement:

private void OnLostFocus(object sender, RoutedEventArgs e) 
{ 
    object focusedElement = FocusManager.GetFocusedElement(this); 

    if (focusedElement is Button) 
     Console.WriteLine(((Button)focusedElement).Content.ToString()); 
} 
+0

Et si je ne sais pas le type d'élément ciblé. – joshua

Questions connexes