Действительно ли возможно заставить элементы в панели инструментов WPF иметь HorizontalAlignment Права?
<ToolBar Height="38" VerticalAlignment="Top" Grid.Row="1">
<Button HorizontalAlignment="Left" Width="50" VerticalAlignment="Stretch"/>
<Button HorizontalAlignment="Left" Width="50" VerticalAlignment="Stretch"/>
<ComboBox Width="120" HorizontalAlignment="Right"/>
</ToolBar>
Я попытался добавить элементы внутри в Сетку и присвоиться ColumnDefinition
s к Слева/справа также. Я также попробовал a StackPanel
. Независимо от того, что я пробую, я, может казаться, не заставляю ComboBox быть "привязанным" на правой стороне Панели инструментов.
ОБНОВЛЕНИЕ:
<DockPanel LastChildFill="True">
Не работает, Это не заполнится, элемент ToolBar как он был бы нормальный элемент.
Дальнейшее исследование показало, что для этого мне нужно установить ширину сетки
на панели инструментов
], или, как сказал Крис Никол, DockPanel
внутри ToolBar
динамически до ширины Toolbar
с использованием RelativeSource
.
Однако это не кажется чистым решением. Довольно сложно заставить панель инструментов
правильно обновляться при изменении размера. Поэтому вместо этого я нашел что-то вроде хака, который выглядит и работает чище.
<ToolBar Height="38" VerticalAlignment="Top" Grid.Row="1">
<Button HorizontalAlignment="Left" Width="50" VerticalAlignment="Stretch"/>
<Button HorizontalAlignment="Left" Width="50" VerticalAlignment="Stretch"/>
</ToolBar>
<ComboBox Margin="0,0,15,0" Width="120" HorizontalAlignment="Right" Grid.Row="1"/>
Поскольку все мои элементы находятся в сетке, я могу разместить свой ComboBox
поверх ToolBar
, назначив его Grid.Row
тому же row как панель инструментов. После настройки моих Margins
, чтобы слегка подтянуть ComboBox
, чтобы не мешать внешнему виду, он работает по мере необходимости без ошибок. Поскольку единственный другой способ, который я нашел для этого, - это динамическая установка свойства DockPanel / Grid's Width, я действительно чувствую, что это более чистый и эффективный способ сделать это.
Вы пробовали использовать DockPanel, который заполняет панель инструментов, затем можно пристыковать ComboBox справа.
Помните, что с док-панелью очень важна последовательность, в которую вы помещаете элементы.
HTH