C# 如何防止重叠处的双厚度边界?
如果您有:C# 如何防止重叠处的双厚度边界?,c#,wpf,xaml,C#,Wpf,Xaml,如果您有: <Grid > <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="2*"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> </Grid> 在每个网格中放置一个厚度为1的边界,网格行之间的边界厚度将增加一倍。处理此
<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:在阅读注释后,我意识到我可能不应该在控件的datatemplate上定义边框,而应该通过控件设置边框并更改controltemplate上的模板。可能会从中获得双边框。如果在边框元素中包裹网格并设置厚度,我相信这会在每个网格项目之间放置边框,并避免出现双边框-现在尝试测试。厚度可以设置为=“left,top,right,bottom”,这意味着可以将重叠部分设置为一半
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="2*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border BorderThickness="1,1,1,0.5" BorderBrush="Black"/>
<Border BorderThickness="1,0.5" BorderBrush="Black" Grid.Row="1" />
<Border BorderThickness="1,0.5,1,1" BorderBrush="Black" Grid.Row="2" />
</Grid>
请公布您当前如何设置边框厚度。我在网格内设置了边框,我正在更改边框厚度。也许我只需要一个最外层的网格,它将包装每个项目。这是有道理的。或者可能存在栅格边界厚度属性。我会去调查一下,你有没有听说过“XAML值千言万语”这句话?@Blam只有在它有一个结束标记的时候!:这是有道理的。我应该想到这一点。我只是觉得很奇怪,然后继续前进。我现在就测试它,希望它能有所帮助——我找不到一个可以快速测试的项目,不得不继续一段时间。如果你仍然没有成功,我会努力挖掘一些东西。我知道我见过用一个边界设置完成的。