2012-01-19 7 views
13

Tengo un scrollviewer con un par de listboxes en él. El problema es si un usuario usa el rodillo central del mouse para desplazarse por el visualizador de desplazamiento mientras su mouse está sobre una vista de lista. La vista de lista desplaza su scrollviewer interno a la parte inferior y luego continúa capturando el mouse, evitando que el scrollviewer que lo contiene se desplace.Vista de lista dentro de scrollviewer previene scrollviewer scroll

¿Alguna idea sobre cómo manejar esto?

+0

Tengo el mismo problema. Hay una discusión aquí: http://social.msdn.microsoft.com/Forums/en-IE/wpf/thread/b440b2cb-26e0-4115-9858-5679c4e45e0a Le avisaré si resuelvo el problema. – Kos

Respuesta

4

¿Intentó desactivar el ListView'sScrollBars?

<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
      ScrollViewer.VerticalScrollBarVisibility="Disabled" /> 
+0

No puedo hacer eso porque las listas de vista pueden tener más elementos que son visibles. – ConditionRacer

+1

@ Justin984 Sin embargo, ¿no están en otro 'ScrollViewer'? – Rachel

+0

Bah, iba a dibujar una pequeña foto de ascii, pero es demasiado doloroso. Los listboxes tienen múltiples entradas. Por ejemplo, el cuadro de lista 1 puede tener 10 entradas, que requieren desplazarse por el cuadro de lista para ver. Pero hay múltiples listboxes que, juntos, son demasiado grandes para la pantalla, entonces tengo un scrollviewer externo para desplazar los listboxes a la vista. ¿Tiene sentido? – ConditionRacer

30

Eso sucede porque los ListView 's (ListBox' s, en realidad) plantilla de contenido envuelve sus artículos con una ScrollViewer por sí mismo.

La forma más sencilla es deshabilitarlo dejando caer su propio Template para el interior ListView, uno que no cree una ScrollViewer:

<ListView> 
     <ListView.Template> 
     <ControlTemplate> 
      <ItemsPresenter></ItemsPresenter> 
     </ControlTemplate> 
     </ListView.Template> 
     ... 
    </ListView> 

Por cierto, el mismo que sucede si usted tiene un ListView dentro de un ListView (este era mi caso).

+0

Esto me ayudó: http://stackoverflow.com/a/2189182/399317 – Kos

0

Si ajusta la vista de lista interna en un visualizador de desplazamiento, entonces el desplazamiento funcionará.

<ListView ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled"> 
       <ListView> 
        <ListView.ItemTemplate> 
         <DataTemplate> 
         </DataTemplate> 
        </ListView.ItemTemplate> 
       </ListView> 
      </ScrollViewer> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
Cuestiones relacionadas