我有一个以编程方式生成的对象网格。
出于测试目的,网格中的每个单元格都是 Border 对象,其子对象是 Image 对象。每个单元格都与相邻单元格齐平放置并完美显示。
当我将每个 Image 对象替换为 Button 对象(每个单元格仍然是 Border 对象,只是为其子对象使用 Button 而不是 Image)时,单元格之间会出现明显的间隙。
我尝试将边距、填充等设置为 0。
Buttons 有什么独特之处使它们具有这种行为方式,我该如何克服?
我有一个以编程方式生成的对象网格。
出于测试目的,网格中的每个单元格都是 Border 对象,其子对象是 Image 对象。每个单元格都与相邻单元格齐平放置并完美显示。
当我将每个 Image 对象替换为 Button 对象(每个单元格仍然是 Border 对象,只是为其子对象使用 Button 而不是 Image)时,单元格之间会出现明显的间隙。
我尝试将边距、填充等设置为 0。
Buttons 有什么独特之处使它们具有这种行为方式,我该如何克服?
Margin
在控制模板中定义。您可以按照以下步骤更改它:
右键单击设计器中的按钮,然后从上下文菜单中选择Edit Template
> 。Edit a Copy...
在对话框中选择新样式的名称并选择要放置的位置。
现在在样式中找到以下 XAML 块并将其设置Margin
为0
.
<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}"/>
无论哪种方式,您的按钮都将彼此相邻,它们之间没有任何间隙。
因此,严格来说,我并不熟悉 Windows 商店应用程序的工作方式,但我不认为它与一般的 WPF / Silverlight 相差太远。当标签控件并排放置时,我会从带有不必要填充的标签控件中得到同样的挫败感。你能做的就是使用负边距,这将纠正它。我认为你必须这样做完全不干净,但它确实有效。