我的
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"/> <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>
我很确信我需要做的是编辑项目容器样式的视觉状态.但我完全失去了什么视觉状态.在混合中单击它们从不显示活动的变换.我尝试将一个或两个显式设置为零,但失败了(可能是因为我不知道如何覆盖默认行为或选择了错误的状态).
任何帮助赞赏!
解决方法
请参见具有所有视觉状态的
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>