У меня есть кнопки на панели инструментов на WPF.
Когда я делаю XAML:
<ToolBar.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Width" Value="21"></Setter>
<Setter Property="Height" Value="21"></Setter>
</Style>
</ToolBar.Resources>
Ни одна из кнопок на панели инструментов не установила их размеры соответственно.
Я должен перейти к каждой кнопке и вручную установить их ширины и высоты к требуемым значениям.
Какая-либо идея, почему Стиль на панели инструментов не работает?
Это происходит потому, что 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.
Если вы добавляете жестко запрограммированные кнопки на панель инструментов, вы можете установить для 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.
Желаем удачи,