WPF ListView arrêt de tir cliquez ScrollBar

voix
8

J'utilise un WPF ListView avec une barre de défilement verticale toujours visible. J'ai un gestionnaire d'événements MouseLeftButtonUp sur le ListView. Le gestionnaire fonctionne correctement sauf lorsque la barre de défilement verticale est cliqué quand il n'a rien à voir par exemple la boîte ListView n'a pas assez de points pour faire tout le défilement.

Dans ce cas, rien ne devrait se produire que l'utilisateur a cliqué sur la barre de défilement vertical juste pour vous assurer qu'il n'y a aucun élément juste à côté de l'écran. Cependant, le ListView déclenche l'événement MouseLeftButtonUp. Si la barre de défilement vertical n'ont du travail à faire l'événement ne soit pas tiré.

Voici mon simplifiewd XAML

<ListView MouseLeftButtonUp=DoSomething_MouseLeftButtonUp SelectionMode=Single ScrollViewer.VerticalScrollBarVisibility=Visible>
  <ListView.View>
    <GridView>
      <GridViewColumn Width=170 Header=Venue DisplayMemberBinding={Binding Path=Venue} />
    </GridView>
  </ListView.View>
</ListView>

Y at-il de toute façon pour empêcher la mise à feu de l'événement MouseLeftButtonUp lorsque la barre de défilement verticale est cliqué irespective si la barre de défilement a un travail à faire ou non?

Créé 27/08/2009 à 02:57
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
4

Ceci est similaire à cette question , et la réponse est la même. Dans votre MouseLeftButtonUpgestionnaire, vérifiez la MouseButtonEventArgs.OriginalSourcepropriété. Cela vous dira où le clic origine.

Créé 28/08/2009 à 00:06
source utilisateur

voix
2

Pour ListBox Je l'ai utilisé le code suivant:

 if (e.OriginalSource is TextBlock || e.OriginalSource is Border)
 {
     // do your stuff
 }
Créé 30/08/2013 à 05:38
source utilisateur

voix
6

Aucune des autres réponses a travaillé dans mon cas en raison de style complexe dans le ListBoxItem. Cela fait cependant:

var item = ItemsControl.ContainerFromElement(sender as ItemsControl, (DependencyObject)e.OriginalSource) as ListBoxItem;
if (item != null)
{
    // Handle it
}
Créé 19/02/2015 à 11:26
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more