2011-11-28 16 views
0

ListViewItemsで選択を無効にしたいと思います。 私は、Windows XPシステム上でアプリケーションをインストールし、以下のコードを使用して行選択を無効にします。Windows 7のWPF ListViewItem選択を削除する方法

<ListView.ItemContainerStyle> 
    <Style TargetType="{x:Type ListViewItem}"> 
     <!--Disables selecting the row--> 
     <Setter Property="Focusable" Value="false"/> 
    </Style> 
</ListView.ItemContainerStyle> 

動作することが、同じコードは、Windows 7に

+0

私のマシン上でfocusableをfalseに設定すると、ListViewItemsを選択することはできず、LvItemの上にマウスを置いても何も強調表示されません。(Win7) – SvenG

+0

Themeの違いのように聞こえます。アプリケーションにさまざまなテーマがありますか? – user7116

答えて

0

を動作しませんが、デフォルトのスタイルを抽出考えてみましょうListViewItemのすべての色を透明に設定します。このソリューションは、ListViewがWin7とXPで同じように見えるという利点があります。この解決法は、ユーザが項目を選択することを妨げるものではなく、選択を不可視にするだけである。このスタイルはいくらかもっと単純化することができるかもしれません。ここに私の完全なXAMLです:

<Window x:Class="MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <Style TargetType="{x:Type ListViewItem}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type ListViewItem}"> 
         <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="2" SnapsToDevicePixels="true"> 
          <Border x:Name="InnerBorder" BorderThickness="1" CornerRadius="1"> 
           <Grid> 
            <Grid.RowDefinitions> 
             <RowDefinition MaxHeight="11"/> 
             <RowDefinition/> 
            </Grid.RowDefinitions> 
            <Rectangle x:Name="UpperHighlight" Fill="#75FFFFFF" Visibility="Collapsed"/> 
            <GridViewRowPresenter Grid.RowSpan="2" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
           </Grid> 
          </Border> 
         </Border> 
         <ControlTemplate.Triggers> 
          <Trigger Property="IsMouseOver" Value="true"> 
           <Setter Property="Background" Value="Transparent"/> 
           <Setter Property="BorderBrush" Value="Transparent"/> 
           <Setter Property="Visibility" TargetName="UpperHighlight" Value="Visible"/> 
          </Trigger> 
          <Trigger Property="IsSelected" Value="true"> 
           <Setter Property="Background" Value="Transparent"/> 
           <Setter Property="BorderBrush" Value="Transparent"/> 
           <Setter Property="BorderBrush" TargetName="InnerBorder" Value="Transparent"/> 
           <Setter Property="Visibility" TargetName="UpperHighlight" Value="Visible"/> 
           <Setter Property="Fill" TargetName="UpperHighlight" Value="#40FFFFFF"/> 
          </Trigger> 
          <MultiTrigger> 
           <MultiTrigger.Conditions> 
            <Condition Property="IsSelected" Value="true"/> 
            <Condition Property="Selector.IsSelectionActive" Value="false"/> 
           </MultiTrigger.Conditions> 
           <Setter Property="Background" Value="Transparent"/> 
           <Setter Property="BorderBrush" Value="Transparent"/> 
          </MultiTrigger> 
          <MultiTrigger> 
           <MultiTrigger.Conditions> 
            <Condition Property="IsSelected" Value="true"/> 
            <Condition Property="IsMouseOver" Value="true"/> 
           </MultiTrigger.Conditions> 
           <Setter Property="Background" Value="Transparent"/> 
           <Setter Property="BorderBrush" Value="Transparent"/> 
          </MultiTrigger> 
          <Trigger Property="IsEnabled" Value="false"> 
           <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </Window.Resources> 

    <StackPanel> 
     <ListView> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn/> 
        <GridViewColumn/> 
        <GridViewColumn/> 
        <GridViewColumn/> 
       </GridView> 
      </ListView.View> 
      <ListViewItem Content="ListViewItem" /> 
      <ListViewItem Content="ListViewItem" /> 
      <ListViewItem Content="ListViewItem" IsSelected="True"/> 
      <ListViewItem Content="ListViewItem" /> 
      <ListViewItem Content="ListViewItem" /> 
      <ListViewItem Content="ListViewItem" /> 
      <ListViewItem Content="ListViewItem" /> 
     </ListView> 
     <Button Height="30"></Button> 
    </StackPanel> 

</Window> 
関連する問題