0

我有一个以编程方式生成的对象网格。

出于测试目的,网格中的每个单元格都是 Border 对象,其子对象是 Image 对象。每个单元格都与相邻单元格齐平放置并完美显示。

当我将每个 Image 对象替换为 Button 对象(每个单元格仍然是 Border 对象,只是为其子对象使用 Button 而不是 Image)时,单元格之间会出现明显的间隙。

我尝试将边距、填充等设置为 0。

Buttons 有什么独特之处使它们具有这种行为方式,我该如何克服?

4

2 回答 2

1

Margin在控制模板中定义。您可以按照以下步骤更改它:

右键单击设计器中的按钮,然后从上下文菜单中选择Edit Template> 。Edit a Copy...

上下文菜单

在对话框中选择新样式的名称并选择要放置的位置。

创建样式对话框

现在在样式中找到以下 XAML 块并将其设置Margin0.

<Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Margin="3">
    <ContentPresenter x:Name="ContentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" ContentTransitions="{TemplateBinding ContentTransitions}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>

x:Key通过从样式声明中删除,将新样式分配给所有按钮:

<Style TargetType="Button">
    <!-- style definition -->
</Style>

或者通过将样式设置为选定按钮:

<Button Style="{StaticResource MyButtonStyle}"/>

无论哪种方式,您的按钮都将彼此相邻,它们之间没有任何间隙。

于 2013-02-07T05:51:39.810 回答
0

因此,严格来说,我并不熟悉 Windows 商店应用程序的工作方式,但我不认为它与一般的 WPF / Silverlight 相差太远。当标签控件并排放置时,我会从带有不必要填充的标签控件中得到同样的挫败感。你能做的就是使用负边距,这将纠正它。我认为你必须这样做完全不干净,但它确实有效。

于 2013-02-07T03:30:36.233 回答