Listview внутри scrollviewer предотвращает прокрутку scrollviewer
У меня есть scrollviewer с несколькими списками в нем. Проблема в том, что пользователь использует средний ролик мыши для прокрутки scrollviewer, когда их мышь находится над списком. Listview прокручивает свой внутренний scrollviewer снизу и затем продолжает захватывать мышь, предотвращая прокрутку содержащего scrollviewer.
Любые идеи о том, как с этим справиться?
Ответы
Ответ 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>