2013-07-07 239 views
1

我開發Windows Store應用,我有這樣的XAML代碼:列表視圖禁用項目點擊

<Popup x:Name="Panel3" IsOpen="False" Grid.ColumnSpan="18" Grid.Column="13" Grid.Row="4" Grid.RowSpan="31"> 
    <StackPanel> 
     <Rectangle Width="765" Height="10" /> 
     <ListView x:Name="Person" Grid.ColumnSpan="18" Grid.Column="13" HorizontalAlignment="Left" Height="643" Grid.Row="4" Grid.RowSpan="31" VerticalAlignment="Top" Width="765" > 
      <ListView.Background> 
       <SolidColorBrush Color="#FF665920" Opacity="0.85"/> 
      </ListView.Background> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding name}"/> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 
    </StackPanel> 
</Popup> 

我想要上禁用列表視圖選擇的項目。所以它僅用於查看,用戶不能在列表視圖中選擇/點擊任何內容。我怎樣才能做到這一點?我的問候...

P.S. 我加IsItemClickEnabled =「假」,以列表視圖行:

<ListView x:Name="Person" Grid.ColumnSpan="18" Grid.Column="13" HorizontalAlignment="Left" Height="643" Grid.Row="4" Grid.RowSpan="31" VerticalAlignment="Top" Width="765" IsItemClickEnabled="False"> 

但它並沒有改變什麼,還是點擊。

回答

5

您需要SelectionMode屬性設置爲None禁用ListView的項目選擇:

<ListView x:Name="Person" SelectionMode="None" ... /> 

此外,您還可能需要IsItemClickEnabled="False"根據您的需要。

+0

謝謝你的工作! :) – Alasse

+0

@nemesv謝謝,這樣做會停止選擇項目,但當我單擊某個項目時仍然會看到動畫。你知道一種停止動畫的方法嗎? – Rick

0

我發現您需要修改ListViewItem的視覺狀態,並根據需要設置SelectionMode="None"IsItemClickEnabled="False",如nemesv在他的回答中所述。

<ListView.ItemContainerStyle> 
    <Style TargetType="ListViewItem"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate> 
        <Grid> 
         <VisualStateManager.VisualStateGroups> 
          <VisualStateGroup x:Name="CommonStates"> 
           <!-- here we are clearing the state behavior, 
            thus disabling the clickability of the ListViewItem --> 
           <VisualState x:Name="Normal" /> 
           <VisualState x:Name="PointerOver" /> 
           <VisualState x:Name="Pressed" /> 
          /VisualStateGroup> 
         </VisualStateManager.VisualStateGroups> 
         <Grid> 
          <ContentPresenter x:Name="ListViewItemContent" /> 
         </Grid> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</ListView.ItemContainerStyle>