网格在列定义之间留出额外空间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网格在列定义之间留出额外空间相关的知识,希望对你有一定的参考价值。
我有一个自定义按钮与自定义模板。在模板中,我使用网格定义来排序Rectangle
,Canvas
和Label
的内容。
这是模板:
<ControlTemplate
TargetType="{x:Type l:UXButton}">
<Border
Name="TEMP_Container"
Padding="{TemplateBinding Padding}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="{TemplateBinding CornerRadius}"
FlowDirection="{Binding Converter={StaticResource LocalizedFlowConverter}}">
<Grid
Name="TEMP_ContentContainer"
Background="Blue">
<Grid.ColumnDefinitions>
<ColumnDefinition
Name="ColumnIcon"
Width="{Binding ActualHeight, RelativeSource={RelativeSource AncestorType={x:Type Border}}}" />
<ColumnDefinition
Name="ColumnSpace"
Width="auto" />
<ColumnDefinition
Name="ColumnContent"
Width="auto" />
</Grid.ColumnDefinitions>
<Rectangle
Name="TEMP_Icon"
Grid.Column="0"
Margin="0"
Fill="{TemplateBinding Foreground}">
<Rectangle.OpacityMask>
<VisualBrush
Stretch="{Binding RelativeSource={RelativeSource AncestorType=l:UXButton}, Path=Stretch}"
Visual="{Binding RelativeSource={RelativeSource AncestorType=l:UXButton}, Path=IconSource}" />
</Rectangle.OpacityMask>
</Rectangle>
<Canvas
Name="TEMP_Space"
Grid.Column="1"
Margin="0"
Width="{TemplateBinding Spacing}" />
<Label
Name="TEMP_Content"
Grid.Column="2"
Margin="0"
Padding="0"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
Foreground="{TemplateBinding Foreground}">
<TextBlock
Margin="0"
Padding="0"
Text="{TemplateBinding Content}"
TextDecorations="{TemplateBinding TextDecorations}" />
</Label>
</Grid>
</Border>
</ControlTemplate>
这是结果:
你可以看到网格在Canvas
(红色)和Rectangle
(绿色)之间留下了一个额外的空间(蓝色),我似乎无法想象为什么!我甚至尝试使用静态值作为列宽,但它没有帮助。我也使用了XAML debugging tools
,它似乎是Grid
的一部分。
这个空间来自哪里?
答案
我认为简单的方法是“修复”你所拥有的东西,但保留你所拥有的那个网格,将它包装在另一个中。
这样它应该集中和缩小。除非你有东西设置网格的宽度。
另一答案
原来这是一个错误。清理bin
和obj
文件夹,只需做一个Rebuild
修复它。一定是Resource
卡在中间的某个地方。
以上是关于网格在列定义之间留出额外空间的主要内容,如果未能解决你的问题,请参考以下文章