【问题标题】:how to delete the border from a WPF treeview如何从 WPF 树视图中删除边框
【发布时间】: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" >

【问题讨论】:

    标签: wpf treeview


    【解决方案1】:

    我刚刚在 XAML 中的 &lt;TreeView *STUFF* &gt;&lt;/TreeView&gt; 调用中使用了 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"

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-06-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-23
          • 2020-06-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多