我并不想去掉Border和Border的Margin属性,该怎么修改
时间: 2024-01-24 17:02:07 浏览: 59
CSS Border高级使用实例分享(三角等形状)
如果你不想去掉 `Border` 控件和 `Margin` 属性,可以在 `Border` 控件的内部再添加一个 `Grid` 控件,并在 `Grid` 控件中绘制 `TextBlock` 和 `Line` 控件。以下是修改后的代码示例:
```xaml
<ItemsControl x:Class="HDSProject.Control.CustomFont"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:HDSProject.Control"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
x:Name="itemCtrl"
ItemsSource="{Binding Path=Title2, RelativeSource={RelativeSource Mode=Self}}"
FontSize="20" Foreground="Teal">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Margin="{Binding Path=CharacterSpacing, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:CustomFont}}">
<Grid>
<TextBlock Text="{Binding}" Margin="0"/>
<Line X1="0" Y1="{Binding ActualHeight, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=TextBlock}}" X2="{Binding ActualWidth, ElementName=tb}" Y2="{Binding ActualHeight, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=TextBlock}}" Stroke="Teal" StrokeThickness="1"/>
</Grid>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
```
这段 XAML 代码同样会在每个 `TextBlock` 下面添加一条宽度与 `TextBlock` 相同的下划线,下划线颜色为 Teal,线条粗细为 1。`Line` 控件的位置使用了 `ActualHeight` 和 `ActualWidth` 属性来实现自适应,无需设置 `Margin` 属性。
阅读全文