Как сделать так, чтобы ширина кнопки автоматически соответствовала тексту кнопки? - PullRequest
12 голосов
/ 11 сентября 2009

Я сейчас делаю это, но делаю что-то не так:):

   <Style TargetType="{x:Type Button}">
      <Setter Property="MinWidth" Value="90" />
      <Setter Property="Width" Value="Auto" />
   </Style>

Я хочу, чтобы кнопки имели минимальную ширину, а также ширину, чтобы они соответствовали тексту кнопки.

Ответы [ 3 ]

17 голосов
/ 11 сентября 2009

Что вам нужно сделать, это установить для свойства HorizontalAlignment значение Center (или Right или Left). Кнопки должны быть растянуты вмещающей панелью.

   <Style TargetType="{x:Type Button}">
      <Setter Property="MinWidth" Value="90" />
      <Setter Property="HorizontalAlignment" Value="Center" />
   </Style>
2 голосов
/ 06 ноября 2015

Если настройка HorizontalAlignment не работает, убедитесь, что вы не установили Width - что предотвратит изменение размера кнопки. Удобный трюк - установить для свойства Width значение NaN или ..NaN в зависимости от конфигурации вашего приложения (что никогда не приводит к ошибке компиляции).

1 голос
/ 11 сентября 2009

Если вы просто установили MinWidth кнопки и если ваша ширина текста больше минимальной ширины, она автоматически расширится, но в обратном случае кнопка будет такой же, как ваша минимальная ширина,

<Style TargetType="{x:Type Button}">
      <Setter Property="MinWidth" Value="90" />
</Style>

этого достаточно для архивации до нужного результата

...