如果你有:
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="2*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
</Grid>
并在每个网格中放置一个厚度为 1 的边框,您将在网格行之间的边框上获得双倍厚度。解决这个问题的唯一方法是指定边框每个边缘的厚度,还是有一些控件可以在没有双倍厚度的情况下为每列在网格周围创建边框?
目前正在尝试这样做:
<Border
BorderBrush="Black"
BorderThickness="1"
Margin="19,0,0,0"
Background="LightGray"
>
<Viewbox VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="2*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock
Grid.Row="1"
Grid.Column="0"
x:Name="TreeViewHeaderTextBox"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Text="Time"
Foreground="Black"
/>
<TextBlock
Grid.Row="1"
Grid.Column="1"
Text="X"
TextAlignment="Center"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
/>
<TextBlock
Grid.Row="1"
Grid.Column="2"
Text="O"
TextAlignment="Center"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
/>
</Grid>
</Viewbox>
</Border>
但是,我开始对旧代码进行更改,所以这不是双边框的真正好例子。但是,我也从这个模板中得到了双边框。
<Border Name="Bd"
Grid.Column="1"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="{TemplateBinding Padding}"
SnapsToDevicePixels="true">
<ContentPresenter x:Name="PART_Header"
ContentSource="Header"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
因为每个项目最终都有一个与下一个项目接触的双倍厚度边框。
编辑2:阅读评论后,我意识到我可能不应该在控件的数据模板上定义边框,而只是通过控件设置边框并更改控件模板上的模板。可能会从中获得双重边界。