2012-01-19 18 views
13

Mam scrollviewer z kilkoma listboxes. Problem polega na tym, że użytkownik używa środkowego wałka myszy do przewijania scrollviewera, gdy jego mysz znajduje się nad listview. Listview przewija swój wewnętrzny scrollviewer na dół, a następnie kontynuuje przechwytywanie myszy, zapobiegając przewijaniu przewijającego się scrollviewera.Widok list wewnątrz scrollviewer zapobiega przewijaniu scrollviewer

Jakieś pomysły, jak sobie z tym poradzić?

+0

Mam ten sam problem. Tutaj jest dyskusja: http://social.msdn.microsoft.com/Forums/en-IE/wpf/thread/b440b2cb-26e0-4115-9858-5679c4e45e0a Poinformuję cię, jeśli rozwiążę problem. – Kos

Odpowiedz

4

Czy próbowałeś wyłączyć ListView'sScrollBars?

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

Nie mogę tego zrobić, ponieważ lista odsłon może zawierać więcej elementów niż jest widocznych. – ConditionRacer

+1

@ Justin984 Czy nie są one jednak w innym 'ScrollViewer'? – Rachel

+0

Bah, miałem zamiar narysować trochę ascii pic, ale to zbyt dużo bólu. Każda z list ma wiele wpisów. Na przykład pole listy 1 może mieć 10 wpisów, które wymagają przewijania listy w celu wyświetlenia. Ale istnieje wiele list, które razem są zbyt duże dla ekranu, więc mam zewnętrzny scrollviewer, który przewija listy do widoku. Czy to ma sens? – ConditionRacer

30

To się dzieje, ponieważ ListView 's (ListBox' s, faktycznie) szablon zawartości owija swoje pozycje o ScrollViewer sama.

Najprostszym sposobem jest wyłączenie go przez upuszczenie własną Template do wewnątrz ListView taki, który nie tworzy ScrollViewer:

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

BTW to samo dzieje się, jeśli masz ListView wewnątrz ListView (to był mój przypadek).

+0

Pomogło mi to: http://stackoverflow.com/a/2189182/399317 – Kos

0

Jeśli otoczysz wewnętrzną listę w przewijaku, przewijanie zadziała.

<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> 
Powiązane problemy