Подтвердить что ты не робот

Listview внутри scrollviewer предотвращает прокрутку scrollviewer

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

Любые идеи о том, как с этим справиться?

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 3

Если вы закроете внутреннее listview в scrollviewer, тогда прокрутка будет работать.

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