如何从 WPF 树视图中删除边框
Posted
技术标签:
【中文标题】如何从 WPF 树视图中删除边框【英文标题】:how to delete the border from a WPF treeview 【发布时间】:2017-03-07 04:30:51 【问题描述】:我想表明,当我选择 treeViewItem 时,treeViewItem 会改变背景。我删除了 TreeView 边框。但离开了 TreeView 背景。如何去除红色圈出的图片中的空间蓝色?
我的 XAML 代码是:
<UserControl.Resources>
<Style x:Key="LibraryTreeViewItemStyle"
TargetType="x:Type TreeViewItem">
<Style.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Foreground" Value="Black" />
</Trigger>
<Trigger Property="IsSelected" Value="false">
<Setter Property="Foreground" Value="White" />
</Trigger>
</Style.Triggers>
<Style.Resources>
<SolidColorBrush x:Key="x:Static SystemColors.HighlightBrushKey" Color="White" />
<SolidColorBrush x:Key="x:Static SystemColors.ControlBrushKey" Color="Green" />
</Style.Resources>
</Style>
</UserControl.Resources>
<TreeView x:Name="tv" HorizontalAlignment="Left" Height="195" VerticalAlignment="Top" Width="187" Background="#FF213757" ItemContainerStyle="StaticResource LibraryTreeViewItemStyle" BorderBrush="#FF1B1919" >
【问题讨论】:
【参考方案1】:我刚刚在 XAML 中的 <TreeView *STUFF* ></TreeView>
调用中使用了 BorderThickness="0"
。
(我的 Xaml 代码作为参考)
<TreeView x:Name="tvReports" BorderThickness="0" Grid.Row="0" ScrollViewer.VerticalScrollBarVisibility="Auto" Visibility="Hidden" Background="AliceBlue"></TreeView>
【讨论】:
【参考方案2】:这解决了我的问题 Scrollviewer inside treeview 有一个边框厚度
<Style TargetType="TreeView">
<Style.Setters>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeView">
<Border Name="Border" Background="Transparent" BorderThickness="0"
>
<ScrollViewer Background="Transparent" Focusable="False"
CanContentScroll="False"
BorderThickness="0">
<ItemsPresenter />
</ScrollViewer>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>
</Style>
【讨论】:
【参考方案3】:将 TreeView Padding 更改为 0
(默认值为 1
):
<TreeView Padding="0" ...
【讨论】:
我试过 Padding = "0" BorderThickness="0"。但结果相同。 @gyungjune,很高兴听到这个消息。如果 Padding 不是解决方案,请将您自己的解决方案作为另一个答案发布 @nikotromus 尝试设置 BorderThickness=0【参考方案4】:由于边框属于 ScrollViewer,所以只需将其重叠设置Margin="-1"
。
【讨论】:
以上是关于如何从 WPF 树视图中删除边框的主要内容,如果未能解决你的问题,请参考以下文章