2013-07-31 150 views
0

今天,我開始教我自己如何創建一個WPF應用程序(最終)WPF的ListView樣式邊框

,所以我開始習慣它,但我已經打了一下碰釘子與樣式列表視圖。

在這上面的圖片你可以看到它完美的工作(約選擇無邊框)

enter image description here

然而,在第二張照片,你可以看到周圍的選擇一個邊陲..看來這只是當我使用鍵盤轉到列表中的下一個項目時發生。

有什麼我在樣式中失蹤,所以我可以擺脫這個邊界?

代碼:(記得我纔開始學習,所以今天它可能是混亂的)

列表視圖樣式

<Style TargetType="{x:Type ListView}"> 
    <Setter Property="BorderThickness" Value="0" /> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Setter Property="BorderThickness" Value="0" /> 
     </Trigger> 
     <Trigger Property="IsSelected" Value="True"> 
      <Setter Property="BorderThickness" Value="0" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

<Style TargetType="{x:Type ListViewItem}"> 
    <Setter Property="BorderThickness" Value="0" /> 
    <Setter Property="Foreground" Value="#4b0037" /> 

    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ListViewItem}"> 
       <Border 
        BorderBrush="Transparent" 
        BorderThickness="0" 
        Background="{TemplateBinding Background}"> 
        <GridViewRowPresenter HorizontalAlignment="Stretch" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Width="Auto" Margin="0" Content="{TemplateBinding Content}"/> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 

    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Setter Property="Background"> 
       <Setter.Value> 
        <ImageBrush ImageSource="images/selection.png"/> 
       </Setter.Value> 
      </Setter> 
      <Setter Property="BorderThickness" Value="0" /> 
     </Trigger> 
     <Trigger Property="IsSelected" Value="True"> 
      <Setter Property="Background"> 
       <Setter.Value> 
        <ImageBrush ImageSource="images/selection.png"/> 
       </Setter.Value> 
      </Setter> 
      <Setter Property="BorderThickness" Value="0" /> 
      <Setter Property="Foreground" Value="#FFFFFF" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

列表視圖XAML

  <ListView Background="transparent" Margin="10 10 10 10" x:Name="Mylist" HorizontalAlignment="Stretch" VerticalContentAlignment="center" VerticalAlignment="Stretch" BorderBrush="Transparent"> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn Header="img" Width="150" DisplayMemberBinding="{Binding img}" /> 
        <GridViewColumn Header="name" Width="150" DisplayMemberBinding="{Binding name}" /> 
        <GridViewColumn Header="path" Width="150" DisplayMemberBinding="{Binding path}" /> 
       </GridView> 
      </ListView.View> 
     </ListView> 

回答

1

對不起,這個如果我有一個網格視圖工作的地方會更容易。我的第二個想法是:ListViewItem s有個FocusVisualStyle

<Setter Property="ListViewItem.FocusVisualStyle" Value="{DynamicResource ListViewItemFocusVisualStyle}" /> 

(或者你把它設置爲null,因爲它是在這裏完成:WPF ListView in GridView mode Highlighting problem

樣式看起來是這樣的:

<Style.Resources> 
    <Style x:Key="ListViewItemFocusVisualStyle"> 
     <Setter Property="Control.Template"> 
      <Setter.Value> 
       <ControlTemplate> 
        <Rectangle Margin="4, 1" StrokeThickness="1" 
           Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" 
           StrokeDashArray="1 2" 
           SnapsToDevicePixels="True" /> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Style.Resources> 
+0

非常感謝你,先生,這解決了我的問題。 – Mattigins

0

請嘗試<Setter Property="Control.Padding" Value="0" />在你的風格的ListViewItem

+0

隱而不宣,你可以在你的風格設置它像這樣似乎沒有任何影響。 – Mattigins