C# WPF TreeViewItem自定义样式圆角

C# WPF TreeViewItem自定义样式圆角,c#,wpf,xaml,C#,Wpf,Xaml,我想在整个树上画个圆角。不只是“标题”部分,所以我直接修改默认样式模板 <ControlTemplate TargetType="{x:Type TreeViewItem}"> <!--<Border CornerRadius="25" BorderBrush="Black" BorderThickness="1" Visibility="Visible">--> <Grid Background="DeepPink" Marg

我想在整个树上画个圆角。不只是“标题”部分,所以我直接修改默认样式模板

<ControlTemplate TargetType="{x:Type TreeViewItem}">
   <!--<Border CornerRadius="25" BorderBrush="Black" BorderThickness="1" Visibility="Visible">-->
          <Grid Background="DeepPink" Margin="0 5" x:Name="grid">
              <ToggleButton x:Name="Expander" ClickMode="Press" IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ExpandCollapseToggleStyle}"/>
              <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Column="1" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
                   <ContentPresenter x:Name="PART_Header" ContentSource="Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
              </Border>
              <ItemsPresenter/>
           </Grid>
    <!--</Border>-->
</ControlTemplate>

我删除了一些细节以使其更具可读性。问题是,只要我在网格周围加上边界,整个功能就消失了。 它不再膨胀了


有可能吗?如何获得圆角并保留功能?

您在示例中删除了XAML的一些部分,但这些部分对于调查您的问题可能很重要

下面是一个适用于我的控件模板:

<ControlTemplate TargetType="{x:Type TreeViewItem}">
    <Border Margin="4" BorderBrush="Red" BorderThickness="1" CornerRadius="10">
        <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition MinWidth="19" Width="Auto" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition />
        </Grid.RowDefinitions>
        <ToggleButton x:Name="Expander" ClickMode="Press"
                IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource TemplatedParent}}"
                Style="{StaticResource ExpandCollapseToggleStyle}" />
        <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}"
                BorderThickness="{TemplateBinding BorderThickness}"
                Background="{TemplateBinding Background}" Grid.Column="1"
                Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
            <ContentPresenter x:Name="PART_Header" ContentSource="Header"
                    HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                    SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
        </Border>
        <ItemsPresenter x:Name="ItemsHost" Grid.ColumnSpan="2" Grid.Column="1" Grid.Row="1" />
    </Grid>
    </Border>
    <ControlTemplate.Triggers>
        <Trigger Property="IsExpanded" Value="false">
            <Setter Property="Visibility" TargetName="ItemsHost" Value="Collapsed" />
        </Trigger>
        <Trigger Property="HasItems" Value="false">
            <Setter Property="Visibility" TargetName="Expander" Value="Hidden" />
        </Trigger>
        <Trigger Property="IsSelected" Value="true">
            <Setter Property="Background" TargetName="Bd"
                    Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
            <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}" />
        </Trigger>
        <MultiTrigger>
            <MultiTrigger.Conditions>
                <Condition Property="IsSelected" Value="true" />
                <Condition Property="IsSelectionActive" Value="false" />
            </MultiTrigger.Conditions>
            <Setter Property="Background" TargetName="Bd"
                    Value="{DynamicResource {x:Static SystemColors.InactiveSelectionHighlightBrushKey}}" />
            <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}}" />
        </MultiTrigger>
        <Trigger Property="IsEnabled" Value="false">
            <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

我使用了默认控件模板,只是在外部网格周围添加了一个边框

结果如下:


尝试在外部边框中添加一些
Background
,你说得对。我的问题是我玩了太多我不懂的东西。我在网格中设置了VisualStateManager,用于向上移动到边界元素所需的动画。