Как избавиться от лишнего поля вокруг кнопки?

Я работаю с XAML в Windows 8 Metro.

У меня есть сетка с несколькими строками. Первая строка содержит кнопку, а вторая — изображение. Изображение имеет ширину полных 600 единиц, а кнопка содержит изображение. Проблема в том, что как бы я ни стилизовал кнопку, ее левый край не совпадает с левым краем изображения. Пока я ковырялся с настройками, похоже, что кнопка включает дополнительное поле за пределами границы, хотя я установил для поля (и отступов, и толщину границы) кнопки значение 0.

Откуда эта граница? Как мне избавиться от этого? Я попытался создать собственный стиль со значением шаблона (ниже), но он игнорирует другие мои настройки стиля. Я не смог найти много полезной документации о том, как создать шаблон, или даже о том, является ли это проблемой.

<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="Button">
            <Grid>
                <ContentPresenter Content="{TemplateBinding Content}" Margin="0" />
            </Grid>
        </ControlTemplate>
    </Setter.Value>
</Setter>

person AndrewS    schedule 15.12.2011    source источник
comment
Похоже, это ошибка. Кнопки с изображением отображаются на два пикселя правее кнопок без изображения; это легче увидеть на вертикальной панели стека. И может быть магия дробных пикселей, которая также вызывает нечеткие ложные границы при наведении курсора.   -  person AndrewS    schedule 22.12.2011


Ответы (1)


Это действительно раздражает. Решение, которое, кажется, работает для меня:

<Button Background="Crimson" 
    HorizontalAlignment="Stretch" 
    VerticalAlignment="Stretch" 
    BorderThickness="0" 
    Margin="-3">Click me!</Button>

Секрет в отрицательном значении margin.

person kiewic    schedule 09.02.2012
comment
хорошо, похоже, это работает, спасибо... отрицательные значения маржи кажутся мне очень неправильными, но что бы ни работало! - person AndrewS; 15.02.2012
comment
Есть ли лучшее решение для этого? В настоящее время мне приходится использовать этот метод, но по мере увеличения разрешения экрана кнопка выглядит неприглядно, как только она помещается в пространство и имеет отрицательный запас. ContentTemplates, кажется, путь, но я еще не понял их. - person Karl; 12.11.2014