WPF ListView с внешней полосой прокрутки и удаления наложения цвета - PullRequest
0 голосов
/ 21 января 2019

XAML выглядит следующим образом

<ScrollViewer>
  <StackPanel Orientation="Horizontal">
    <ListViewer>
    ...
    </ListViewer>

    <ListViewer>
    ...
    </ListViewer>
  </StackPanel>
</ScrollViewer>

Вопрос 1. Как я могу убедиться, что прокрутка полностью обрабатывается внешним прокручивателем? Если я сейчас прокручиваю колесо мыши в любом из элементов управления списком, прокрутки не будет. Если я прокручиваю где-то за пределами ListViews, прокрутка работает как положено.

Вопрос 2. Как я могу избавиться от выделения «наведение мыши» и «выбранного» наложения цветов из ListViews?

1 Ответ

0 голосов
/ 22 января 2019

Добавьте обработчик событий PreviewMouseWheel, чтобы вручную обрабатывать прокрутку.Кроме того, замените ContentTemplate ListViewItem для настройки его внешнего вида (а именно, уберите выделение и выделение при наведении курсора мыши):

<ScrollViewer PreviewMouseWheel="OnPreviewMouseWheel">
    <StackPanel>
        <ListView>
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="ListViewItem">
                                <Border Padding="4,2">
                                    <ContentPresenter />
                                </Border>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </ListView.ItemContainerStyle>
        </ListView>
    </StackPanel>
</ScrollViewer>

Вот обработчик события:

private void OnPreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
    var scrollViewer = (ScrollViewer)sender;
    scrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset - e.Delta);
    e.Handled = true;
}

Ваш ListView начинает выглядеть как простой ItemsControl, поэтому рассмотрите возможность его использования (хотя ItemsControl не имеет собственного режима прокрутки).

...