8
votes

WPF STOP ListView ScrollBar Barre de cuisson clic

J'utilise un WPF ListView avec une barre de défilement verticale toujours visible. J'ai un gestionnaire d'événements de Mouseleftbuttonup sur la listeView. Le gestionnaire fonctionne correctement, sauf lorsque la barre de défilement verticale est cliquée lorsqu'il n'a rien à faire, c'est-à-dire que la liste ListView ne dispose pas de suffisamment d'articles pour faire défiler.

Dans ce cas, rien ne devrait arriver car l'utilisateur a cliqué sur la verticale Scrollez de la barre juste pour vous assurer qu'il n'y a pas d'éléments seulement à l'écran. Cependant, la liste achemine l'événement MouseleftButtonUp. Si la barre de défilement verticale a des travaux de travail pour faire l'événement ne devient pas tiré. P>

Voici mon Simplified XAML P>

<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>


0 commentaires

3 Réponses :



2
votes

Pour la liste de liste J'ai utilisé le code suivant:

 if (e.OriginalSource is TextBlock || e.OriginalSource is Border)
 {
     // do your stuff
 }


1 commentaires

Cela permettra de tirer des événements si vous cliquez sur la bordure des boutons de barre de défilement.



8
votes

Aucune des autres réponses n'a travaillé dans mon cas à cause du style complexe dans le ListboxItem code>. Cela a cependant:

var item = ItemsControl.ContainerFromElement(sender as ItemsControl, (DependencyObject)e.OriginalSource) as ListBoxItem;
if (item != null)
{
    // Handle it
}


2 commentaires

Cela fonctionne pour moi aussi. D'autres réponses ne fonctionneront pas en raison des autres commandes de la liste de liste. Merci


Si vous avez utilisé MVVM et PASSEventArgStocommand = "true" La solution ci-dessus fonctionne également, il vous suffit de remplacer l'expéditeur par E.Source