2016-08-02 72 views
2
設置邊框的ListViewItem

我的ListView中應該有以下方式:如何在WPF

  • 周圍全的ListView(實現)
  • 沒有與ListViewItem的交互時,高亮無邊框(實現)
  • 邊界各地選擇 ListViewItem的(缺失)

我的ListView:

<ListView DisplayMemberPath="Name" BorderThickness="0" > 
     <ListView.ItemContainerStyle> 
      <Style TargetType="{x:Type ListViewItem}"> 
       <!-- get rid of the highlighting --> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type ListViewItem}"> 
          <ContentPresenter /> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
       <!-- style selected item --> 
       <Style.Triggers> 
        <Trigger Property="IsSelected" Value="True"> 
         <Setter Property="FontSize" Value="20" /> 
         <Setter Property="FontWeight" Value="Bold" /> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </ListView.ItemContainerStyle> 
    </ListView> 

我試過thisthis,兩者都不適合我。我想我的問題是模板,但我不知道如何在選定的ListViewItem周圍放置邊框。

更新

工作液:

<ListView DisplayMemberPath="Name" BorderThickness="0" > 
     <ListView.ItemContainerStyle> 
      <Style TargetType="{x:Type ListViewItem}"> 
       <!-- get rid of the highlighting --> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type ListViewItem}"> 
          <Border x:Name="Border"> 
           <ContentPresenter /> 
          </Border> 
          <ControlTemplate.Triggers> 
           <Trigger Property="IsSelected" Value="True"> 
            <Setter Property="FontSize" Value="20" /> 
            <Setter Property="FontWeight" Value="Bold" /> 
            <Setter TargetName="Border" Property="BorderBrush" Value="Black"/> 
            <Setter TargetName="Border" Property="BorderThickness" Value="2"/> 
           </Trigger> 
          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </ListView.ItemContainerStyle> 
    </ListView> 

回答

2

也許這個作品。在ContentPresenter附近添加邊框使用控制模板觸發器

<ControlTemplate TargetType="{x:Type ListViewItem}"> 
           <Border x:Name="Border"> 
            <ContentPresenter /> 
           </Border> 
           <ControlTemplate.Triggers> 
            <Trigger Property="IsSelected" Value="True"> 
             <Setter Property="FontSize" Value="20" /> 
             <Setter Property="FontWeight" Value="Bold" /> 
             <Setter TargetName="Border" Property="BorderBrush" Value="Red"/> 
             <Setter TargetName="Border" Property="BorderThickness" Value="1"/> 
            </Trigger> 
           </ControlTemplate.Triggers> 
          </ControlTemplate> 
+1

非常感謝!這一個像魅力:) –