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,用于向上移动到边界元素所需的动画。