2011-12-15 3 views
10

Я работаю с 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> 
+0

Это, кажется, ошибка. Кнопки с содержимым изображения отображают два пикселя справа от кнопок без содержимого изображения; это проще увидеть в вертикальной панели стека. И может быть мелко-пиксельная магия, которая также порождает ложные границы с hoverover. – AndrewS

ответ

15

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

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

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

+0

хорошо, что похоже на работу, спасибо ... отрицательные значения маржи кажутся мне очень неправильными, но все работает! – AndrewS

+2

Есть ли лучшее решение для этого? В настоящее время мне приходится использовать этот метод, но по мере того, как разрешение экрана увеличивается, кнопка выглядит неприглядно, как только кнопка «подходит» в пространстве и имеет отрицательный запас. ContentTemplates, похоже, так и есть, но мне еще предстоит это выяснить. – Karl

Смежные вопросы