Listview внутри scrollviewer предотвращает прокрутку scrollviewer - PullRequest
19 голосов
/ 20 января 2012

У меня есть прокрутка с парой списков. Проблема состоит в том, что пользователь использует средний ролик мыши для прокрутки прокрутки, когда его мышь находится над списком. Список просмотра прокручивает свой внутренний просмотрщик вниз, а затем продолжает захват мыши, предотвращая прокрутку содержащего прокрутки.

Есть идеи, как с этим справиться?

Ответы [ 3 ]

42 голосов
/ 12 июля 2012

Это происходит потому, что шаблон содержимого ListView (на самом деле ListBox) оборачивает свои элементы самим ScrollViewer.

Самый простой способ - отключить его, отбросивсобственный Template для внутреннего ListView, тот, который не создает ScrollViewer:

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

Кстати, то же самое происходит, если у вас есть ListView внутри ListView (это был мой случай).

3 голосов
/ 20 января 2012

Вы пытались отключить ListView's ScrollBars?

<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled"
          ScrollViewer.VerticalScrollBarVisibility="Disabled" />
0 голосов
/ 29 августа 2013

Если вы оберните внутренний просмотр списка в просмотре прокрутки, прокрутка будет работать.

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