c # UWP ListView с горизонтальными ListViews - PullRequest
0 голосов
/ 29 октября 2018

У меня есть вертикальный ListView. Он содержит несколько горизонтальных ListViews.

Пример:

<ListView ScrollViewer.HorizontalScrollMode="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollMode="Enabled" ScrollViewer.VerticalScrollBarVisibility="Hidden">
    <ListView ScrollViewer.HorizontalScrollMode="Enabled" ScrollViewer.HorizontalScrollBarVisibility="Hidden">
            <ListView.ItemsPanel>
                    <ItemsPanelTemplate>
                            <ItemsWrapGrid Orientation="Vertical" MaximumRowsOrColumns="1"/>
                    </ItemsPanelTemplate>
            </ListView.ItemsPanel>
            <Grid Width="50" Height="50" Background="Green"/>
            <Grid Width="50" Height="50" Background="Green"/>
            <Grid Width="50" Height="50" Background="Green"/>
            <Grid Width="50" Height="50" Background="Green"/>
            <Grid Width="50" Height="50" Background="Green"/>
            <Grid Width="50" Height="50" Background="Green"/>
            <Grid Width="50" Height="50" Background="Green"/>
    </ListView>
    <ListView ScrollViewer.HorizontalScrollMode="Enabled" ScrollViewer.HorizontalScrollBarVisibility="Hidden">
            <ListView.ItemsPanel>
                    <ItemsPanelTemplate>
                            <ItemsWrapGrid Orientation="Vertical" MaximumRowsOrColumns="1"/>
                    </ItemsPanelTemplate>
            </ListView.ItemsPanel>
            <Grid Width="50" Height="50" Background="Green"/>
            <Grid Width="50" Height="50" Background="Green"/>
            <Grid Width="50" Height="50" Background="Green"/>
            <Grid Width="50" Height="50" Background="Green"/>
            <Grid Width="50" Height="50" Background="Green"/>
            <Grid Width="50" Height="50" Background="Green"/>
            <Grid Width="50" Height="50" Background="Green"/>
    </ListView>
</ListView>

Теперь прокрутка вообще не работает, только манипуляции с прикосновением.

Мне нужно сделать так, чтобы колесико мыши работало только по вертикали, а манипуляции остались прежними (как вертикальными, так и горизонтальными).

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 30 октября 2018

Для горизонтального ListView вы можете отредактировать значение по умолчанию ItemsPanelTemplate и установить Orientation как Horizontal, а затем установить crollViewer.HorizontalScrollMode на Enabled. И вы могли бы также следующий горизонтальный стиль ListView напрямую. Я тестировал по вашему коду, стиль работает.

<Style x:Key="MyListViewStyle" TargetType="ListView">
    <Setter Property="IsTabStop" Value="False"/>
    <Setter Property="TabNavigation" Value="Once"/>
    <Setter Property="IsSwipeEnabled" Value="True"/>
    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"/>
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
    <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Disabled"/>
    <Setter Property="ScrollViewer.IsHorizontalRailEnabled" Value="False"/>
    <Setter Property="ScrollViewer.VerticalScrollMode" Value="Enabled"/>
    <Setter Property="ScrollViewer.IsVerticalRailEnabled" Value="True"/>
    <Setter Property="ScrollViewer.ZoomMode" Value="Disabled"/>
    <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False"/>
    <Setter Property="ScrollViewer.BringIntoViewOnFocusChange" Value="True"/>
    <Setter Property="UseSystemFocusVisuals" Value="{StaticResource UseSystemFocusVisuals}"/>
    <Setter Property="ItemContainerTransitions">
        <Setter.Value>
            <TransitionCollection>
                <AddDeleteThemeTransition/>
                <ContentThemeTransition/>
                <ReorderThemeTransition/>
                <EntranceThemeTransition IsStaggeringEnabled="False"/>
            </TransitionCollection>
        </Setter.Value>
    </Setter>
    <Setter Property="ItemsPanel">
        <Setter.Value>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel 
                    Orientation="Horizontal"  
                    VerticalAlignment="Top"
                    ScrollViewer.HorizontalScrollMode="Enabled"
                    ScrollViewer.VerticalScrollMode="Disabled"
                    />
            </ItemsPanelTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ListView">
                <Border Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}">
                    <ScrollViewer x:Name="ScrollViewer" AutomationProperties.AccessibilityView="Raw" 
                                  BringIntoViewOnFocusChange="{TemplateBinding ScrollViewer.BringIntoViewOnFocusChange}" 
                                  HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" 
                                  HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}" 
                                  IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}" 
                                  IsVerticalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsVerticalScrollChainingEnabled}" 
                                  IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" 
                                  IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}" 
                                  IsHorizontalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsHorizontalScrollChainingEnabled}"
                                  TabNavigation="{TemplateBinding TabNavigation}" 
                                  VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}" 
                                  VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" 
                                  ZoomMode="{TemplateBinding ScrollViewer.ZoomMode}">
                        <ItemsPresenter Footer="{TemplateBinding Footer}" 
                                        FooterTransitions="{TemplateBinding FooterTransitions}"
                                        FooterTemplate="{TemplateBinding FooterTemplate}"
                                        Header="{TemplateBinding Header}" 
                                        HeaderTransitions="{TemplateBinding HeaderTransitions}" 
                                        HeaderTemplate="{TemplateBinding HeaderTemplate}"
                                        Padding="{TemplateBinding Padding}"/>
                    </ScrollViewer>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...