ListView - 禁用鼠标按下行为

时间:2015-05-24 01:14:38

标签: xaml windows-store-apps

我的Windows应用商店应用中有一个ListView。我希望它是一个静态列表(我使用它是因为它支持虚拟化,但如果我应该使用别的东西,请告诉我!)。我已经设法通过鼠标悬停等来禁用大多数UI更改。但是,有一件事我没想出怎么做就是删除点击行为。当您单击某个项目时,它会缩小一点,以便您反馈它已被单击。我怎么把它关掉?

这是我的ListView XAML:

    <ListView x:Name="SlideStrip"
              SelectionMode="None"
              ScrollViewer.HorizontalScrollMode="Auto"
              ScrollViewer.HorizontalScrollBarVisibility="Auto"
              ScrollViewer.VerticalScrollBarVisibility="Disabled"
              ItemContainerStyle="{StaticResource PlainOldList}">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <ItemsStackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        <ListView.ItemTemplate>
            <DataTemplate>
                <local:PDFPageUserControl
                        Margin="0 0 5 0"
                        ViewModel="{Binding}"
                        RespectRenderingDimension="Vertical" />
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

PlainOldList样式如下:

    <Style x:Key="PlainOldList" TargetType="ListViewItem">
        <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}"/>
        <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}"/>
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="TabNavigation" Value="Local"/>
        <Setter Property="IsHoldingEnabled" Value="True"/>
        <Setter Property="Margin" Value="0,0,0,0"/>
        <Setter Property="HorizontalContentAlignment" Value="Left"/>
        <Setter Property="VerticalContentAlignment" Value="Top"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListViewItem">
                    <ListViewItemPresenter x:Name="listViewItemPresenter" 
                        CheckHintBrush="{ThemeResource ListViewItemCheckHintThemeBrush}" 
                        CheckBrush="{ThemeResource ListViewItemCheckThemeBrush}" 
                        ContentMargin="0" 
                        ContentTransitions="{TemplateBinding ContentTransitions}" 
                        CheckSelectingBrush="{ThemeResource ListViewItemCheckSelectingThemeBrush}" 
                        DragForeground="{ThemeResource ListViewItemDragForegroundThemeBrush}" 
                        DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}" 
                        DragBackground="{ThemeResource ListViewItemDragBackgroundThemeBrush}" 
                        DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}" 
                        FocusBorderBrush="{ThemeResource ListViewItemFocusBorderThemeBrush}" 
                        HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" 
                        Padding="{TemplateBinding Padding}" 
                        PointerOverBackgroundMargin="0" 
                        PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}" 
                        ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}" 
                        SelectedPointerOverBorderBrush="{ThemeResource ListViewItemSelectedPointerOverBorderThemeBrush}" 
                        SelectionCheckMarkVisualEnabled="True" 
                        SelectedForeground="{ThemeResource ListViewItemSelectedForegroundThemeBrush}" 
                        SelectedPointerOverBackground="{ThemeResource ListViewItemSelectedPointerOverBackgroundThemeBrush}" 
                        SelectedBorderThickness="{ThemeResource ListViewItemCompactSelectedBorderThemeThickness}" 
                        SelectedBackground="{ThemeResource ListViewItemSelectedBackgroundThemeBrush}" 
                        VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}">
                    </ListViewItemPresenter>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

我非常确信我需要做的是编辑项目容器样式的视觉状态。但我完全失去了什么视觉状态。在混合中单击它们从不显示活动的变换。我尝试将一个或两个显式设置为零,但失败了(可能是因为我不知道如何覆盖默认行为或选择了错误的状态)。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:3)

查看具有所有视觉状态的ListViewItemExpanded样式。 我删除了所有不必要的

    <Style TargetType="ListViewItem" x:Key="ListViewItemWithoutEffectStyle">
        <Setter Property="HorizontalAlignment" Value="Stretch"/>
        <Setter Property="VerticalAlignment" Value="Stretch"/>
        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        <Setter Property="VerticalContentAlignment" Value="Stretch"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListViewItem">
                    <Border x:Name="OuterContainer" RenderTransformOrigin="0.5,0.5">
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="Normal" />
                                <VisualState x:Name="Pressed"/>
                                <VisualState x:Name="CheckboxPressed"/>
                                <VisualState x:Name="Disabled"/>

                            </VisualStateGroup>
                            <VisualStateGroup x:Name="SelectionStates">
                                <VisualState x:Name="Unselected" />
                                <VisualState x:Name="Selected"/>
                                <VisualState x:Name="SelectedUnfocused"/>
                            </VisualStateGroup>
                            <VisualStateGroup x:Name="DataVirtualizationStates">
                                <VisualState x:Name="DataAvailable" />
                                <VisualState x:Name="DataPlaceholder"/>
                            </VisualStateGroup>
                            <VisualStateGroup x:Name="MultiSelectStates">
                                <VisualState x:Name="NoMultiSelect" />
                                <VisualState x:Name="ListMultiSelect"/>
                                <VisualState x:Name="GridMultiSelect"/>
                            </VisualStateGroup>
                            <VisualStateGroup x:Name="ReorderModeStates">
                                <VisualState x:Name="ReorderEnabled"/>
                                <VisualState x:Name="Reorderable"/>
                                <VisualState x:Name="ReorderDisabled" />
                            </VisualStateGroup>
                            <VisualStateGroup x:Name="ReorderHintStates">
                                <VisualState x:Name="NoReorderHint" />
                                <VisualState x:Name="BottomReorderHint"/>
                                <VisualState x:Name="RightReorderHint"/>
                                <VisualState x:Name="TopReorderHint"/>
                                <VisualState x:Name="LeftReorderHint"/>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <Grid x:Name="ReorderHintContent" Background="Transparent">
                            <Border x:Name="ContentContainer">
                                <Border x:Name="ContentBorder"
                                        Background="{TemplateBinding Background}"
                                        BorderBrush="{TemplateBinding BorderBrush}"
                                        BorderThickness="{TemplateBinding BorderThickness}">
                                    <Grid>
                                        <ContentPresenter x:Name="contentPresenter"
                                                          ContentTransitions="{TemplateBinding ContentTransitions}"
                                                          ContentTemplate="{TemplateBinding ContentTemplate}"
                                                          Content="{TemplateBinding Content}"
                                                          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                                          Margin="{TemplateBinding Padding}" />
                                    </Grid>
                                </Border>
                            </Border>
                        </Grid>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>