Почему System.Windows.Controls.Button всегда имеет отступ 10px? - PullRequest
3 голосов
/ 18 октября 2010

Смотрите скриншот.Ограничивающая рамка с голубой рамкой - это кнопка, а синяя заливка - это прямоугольник.Я не могу за свою жизнь понять, как избавиться от отступов в кнопке.Есть ли способ расположить прямоугольник вверху слева, чтобы он касался голубой границы?

alt text

Спасибо.

Ответы [ 3 ]

7 голосов
/ 18 октября 2010

Вы пытались установить поле 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}" />
1 голос
/ 08 июня 2012

Обходной путь:

Нарисуйте прямоугольник и добавьте к нему клик.

0 голосов
/ 18 октября 2010

Я не могу сгенерировать такое очевидное поведение, но мне интересно, вы бы разрабатывали приложение для Windows Phone?

Если это так, то, скорее всего, вы видите не результат Padding, а результат "PhoneTouchTargetOverhang". Это ресурс Thickness, найденный в App.xaml и используемый стилем "PhoneButtonBase" для внешней границы Margin для кнопки.

Это на самом деле копия стиля по умолчанию, который Windows Phone 7 применяет к кнопкам. Чтобы заменить его, вам необходимо указать, что ваша кнопка использует стиль «PhoneButtonBase», а затем изменить значение «PhoneTouchTargetOverhang». Это обновит любую кнопку, использующую этот стиль.

...