为啥 System.Windows.Controls.Button 总是有 10px 的填充?
Posted
技术标签:
【中文标题】为啥 System.Windows.Controls.Button 总是有 10px 的填充?【英文标题】:Why does System.Windows.Controls.Button always have a padding of 10px?为什么 System.Windows.Controls.Button 总是有 10px 的填充? 【发布时间】:2011-04-26 18:48:41 【问题描述】:见截图。带有青色边框的框是按钮,而蓝色填充是矩形。我一生都无法弄清楚如何摆脱按钮中的填充。有没有办法将矩形定位到左上角,使其接触青色边框?
谢谢。
【问题讨论】:
【参考方案1】:您是否尝试将Rectangle
的边距设置为0
?
<Button x:Name="Button" BorderThickness="0" Margin="0" Padding="0" Width="96" Height="96">
<Rectangle Fill="Blue" Margin="0" Width="96" Height="96" />
</Button>
编辑:填充必须来自按钮控件模板。尝试使用自定义模板:
<Style x:Key="MyButton" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<Rectangle Fill="Blue" Margin="0" Width="96" Height="96" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Button x:Name="Button" BorderThickness="0" Margin="0" Padding="0"
Width="96" Height="96" Style="StaticResource MyButton" />
【讨论】:
【参考方案2】:解决方法:
绘制一个矩形并添加 onclick 到它。
【讨论】:
【参考方案3】:我无法生成那种明显的行为,但我想知道,你会在 Windows Phone 应用程序中进行开发吗?
如果是这样,您最有可能看到的不是Padding
的结果,而是“PhoneTouchTargetOverhang”的结果。这是 App.xaml 中的 Thickness
资源,由“PhoneButtonBase”样式用于按钮的外边框Margin
。
这实际上是windows phone 7 应用于按钮的默认样式的副本。要替换它,您需要实际指定您的按钮使用“PhoneButtonBase”样式,然后更改“PhoneTouchTargetOverhang”的值。这将更新使用此样式的任何按钮。
【讨论】:
我在项目中的任何地方都没有看到 PhoneTouchTargetOverhang" 或 "PhoneButtonBase"。我什至 grep 了。:( "Style='PhoneButtonBase'" 无法解决。 @MTSoul:您正在开发 Windows Phone 应用程序吗?以上是关于为啥 System.Windows.Controls.Button 总是有 10px 的填充?的主要内容,如果未能解决你的问题,请参考以下文章