网格在列定义之间留出额外空间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网格在列定义之间留出额外空间相关的知识,希望对你有一定的参考价值。

我有一个自定义按钮与自定义模板。在模板中,我使用网格定义来排序RectangleCanvasLabel的内容。

这是模板:

<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>

这是结果:

enter image description here

你可以看到网格在Canvas(红色)和Rectangle(绿色)之间留下了一个额外的空间(蓝色),我似乎无法想象为什么!我甚至尝试使用静态值作为列宽,但它没有帮助。我也使用了XAML debugging tools,它似乎是Grid的一部分。

这个空间来自哪里?

答案

我认为简单的方法是“修复”你所拥有的东西,但保留你所拥有的那个网格,将它包装在另一个中。

这样它应该集中和缩小。除非你有东西设置网格的宽度。

另一答案

原来这是一个错误。清理binobj文件夹,只需做一个Rebuild修复它。一定是Resource卡在中间的某个地方。

以上是关于网格在列定义之间留出额外空间的主要内容,如果未能解决你的问题,请参考以下文章

自定义 Slick 滑块设计,在图像之间留出适当的空间

如何在 PhpStorm 中的变量和运算符之间留出空间?

我需要在一个单元格和另一个单元格之间留出空间

如何在图库中的缩略图之间留出空间并且在所有浏览器中都相同?

如何在列表视图中的两个图像之间留出空间?

如何在列模板中使用kendo网格聚合值