Настройка размеров кнопок панели инструментов с помощью стиля - PullRequest
6 голосов
/ 09 марта 2010

У меня есть кнопки на панели инструментов в WPF.

Когда я делаю XAML:

<ToolBar.Resources>
   <Style TargetType="{x:Type Button}">
      <Setter Property="Width" Value="21"></Setter>
      <Setter Property="Height" Value="21"></Setter>
   </Style>
</ToolBar.Resources>

Ни одна из кнопок на панели инструментов не устанавливает свои размеры соответственно.

Мне нужно перейти к каждой кнопке и вручную установить их ширину и высоту на нужные значения.

Есть идеи, почему не работает стиль на панели инструментов?

Ответы [ 2 ]

9 голосов
/ 09 марта 2010

Это происходит потому, что ToolBar применяет стиль, определенный ToolBar.ButtonStyleKey, к кнопкам, а не оставляет их со стилем по умолчанию. (Вот почему кнопки на панелях инструментов плоские, даже если стиль по умолчанию поднят.) Вам нужно «взломать» этот стиль вместо стиля по умолчанию:

<ToolBar.Resources>
  <Style x:Key="{x:Static ToolBar.ButtonStyleKey}" TargetType="Button">
    <Setter Property="Width" Value="100" />
  </Style>
</ToolBar.Resources>

Обратите внимание на x: введите объявление стиля.

2 голосов
/ 09 марта 2010

Если вы добавляете жестко закодированные кнопки на панель инструментов, вы можете установить ToolBar.ItemContainerStyle в собственный стиль, чтобы получить желаемый эффект.

<ToolBar.ItemContainerStyle>
    <Style
        TargetType="Button">
        <Setter
            Property="Width"
            Value="21" />
        <Setter
            Property="Height"
            Value="21" />
    </Style>
</ToolBar.ItemContainerStyle>

Если вы используете ToolBar.ItemsSource, вы можете вместо этого использовать ToolBar.ItemTemplate, чтобы определить шаблон для данных панели инструментов.

<ToolBar.ItemTemplate>
    <DataTemplate>
        <Button
            Width="21"
            Height="21"
            Content="{Binding}" />
    </DataTemplate>
</ToolBar.ItemTemplate>

Обратите внимание, что в некоторых случаях оба из них могут использоваться одновременно для дополнительной гибкости.

Это относится не только к панели инструментов, но и ко всем производным ItemsControl.

Удачи,

...