Как сделать элемент на панели инструментов заполнить все свободное пространство в WPF
Я пытаюсь сделать элемент на ToolBar (в частности, Label, TextBlock или TextBox), который заполнит все доступные горизонтальные пространства. Я сам ToolBar растянулся, вытащив его из ToolBarTray, но я не могу понять, как сделать элементы растягиваться.
Я попробовал установить значение Width в значение Percenatage или Star, но он не принимает этого. Настройка горизонтального (контенту) выравнивания на растяжку в разных местах также не имеет никакого эффекта.
Ответы
Ответ 1
К сожалению, похоже, что в ControlTemplate по умолчанию для ToolBar не используется элемент ItemsPresenter, он использует ToolBarPanel, поэтому настройка ToolBar.ItemsPanel не будет иметь никакого эффекта.
ToolBarPanel наследуется от StackPanel. По умолчанию его ориентация привязана к родительскому ToolBar.Orientation, но вы можете переопределить это и установить ориентацию по вертикали со стилем, и это позволит элементам растягиваться горизонтально:
<DockPanel>
<ToolBar DockPanel.Dock="Top">
<ToolBar.Resources>
<Style TargetType="{x:Type ToolBarPanel}">
<Setter Property="Orientation" Value="Vertical"/>
</Style>
</ToolBar.Resources>
<ComboBox HorizontalAlignment="Stretch" SelectedIndex="0">
<ComboBoxItem>A B C</ComboBoxItem>
<ComboBoxItem>1 2 3</ComboBoxItem>
<ComboBoxItem>Do Re Mi</ComboBoxItem>
</ComboBox>
</ToolBar>
<Border Margin="10" BorderBrush="Yellow" BorderThickness="3"/>
</DockPanel>
Затем вы можете использовать Grid или что-то вместо ComboBox, если вам нужно несколько элементов в строке.
Ответ 2
Попробуйте поставить горизонтальную StackPanel в ToolBar, а затем элемент, который вы хотите внутри этой StackPanel.
Ответ 3
Вам нужна специальная настраиваемая панель, например автоматическая растягиваемая панель стека, и замените панель инструментов. Проверьте это, вы можете найти одну панель там
http://blendables.com/products/productsLayoutmix.aspx
Ответ 4
Вы пробовали обернуть свой предмет в гриде, а не в StackPanel?
Ответ 5
У меня была такая же проблема некоторое время, и в Интернете очень мало информации.
Так как это не похоже на то, что вам нужны все дополнительные функции панели инструментов (складные/подвижные лотки), почему бы просто не использовать верхнюю стыковую сетку и немного настроить фон, чтобы он выглядел как стандартная панель инструментов