2015-05-24 2 views
4

У меня есть ListView в моем приложении Windows Store. Я хочу, чтобы это был статический список (я использую его, потому что он поддерживает виртуализацию, но если я должен использовать что-то еще, дайте мне знать!). Мне удалось отключить большинство изменений пользовательского интерфейса с помощью мыши и т. Д. Однако я не понял, как это сделать, это удалить поведение кликов. Когда вы нажимаете на элемент, он немного сжимается, чтобы дать вам ответ, который был нажат. Как отключить это?ListView - отключить поведение мыши

Вот мой 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> 

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

Любая помощь оценена!

ответ

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> 
+0

Nice! Благодаря!! Кажется, работает. Отчитается после дальнейшего тестирования! – Gordon

Смежные вопросы