【问题标题】:Why does System.Windows.Controls.Button always have a padding of 10px?为什么 System.Windows.Controls.Button 总是有 10px 的填充?
【发布时间】:2011-04-26 18:48:41
【问题描述】:

见截图。带有青色边框的框是按钮,而蓝色填充是矩形。我一生都无法弄清楚如何摆脱按钮中的填充。有没有办法将矩形定位到左上角,使其接触青色边框?

谢谢。

【问题讨论】:

    标签: silverlight user-controls button padding


    【解决方案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 应用程序吗?
        猜你喜欢
        • 2011-07-14
        • 2021-05-15
        • 2021-12-07
        • 2020-04-28
        • 2017-01-18
        • 2015-11-13
        • 1970-01-01
        • 2014-03-16
        • 1970-01-01
        相关资源
        最近更新 更多