Установка размеров кнопки на панели инструментов с помощью Стиля

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

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

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

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

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

Какая-либо идея, почему Стиль на панели инструментов не работает?

6
задан Dave Clemmer 15 August 2011 в 17:22
поделиться

2 ответа

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

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

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

9
ответ дан 9 December 2019 в 22:32
поделиться

Если вы добавляете жестко запрограммированные кнопки на панель инструментов, вы можете установить для 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.

Желаем удачи,

2
ответ дан 9 December 2019 в 22:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: