Объекты панели инструментов WPF HorizontalAligment = “право”

Действительно ли возможно заставить элементы в панели инструментов 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>

Я попытался добавить элементы внутри в Сетку и присвоиться ColumnDefinitions к Слева/справа также. Я также попробовал a StackPanel. Независимо от того, что я пробую, я, может казаться, не заставляю ComboBox быть "привязанным" на правой стороне Панели инструментов.

ОБНОВЛЕНИЕ:

<DockPanel LastChildFill="True">

Не работает, Это не заполнится, элемент ToolBar как он был бы нормальный элемент.

13
задан jsmith 4 February 2010 в 22:17
поделиться

2 ответа

Дальнейшее исследование показало, что для этого мне нужно установить ширину сетки на панели инструментов ], или, как сказал Крис Никол, 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, я действительно чувствую, что это более чистый и эффективный способ сделать это.

16
ответ дан 1 December 2019 в 21:37
поделиться

Вы пробовали использовать DockPanel, который заполняет панель инструментов, затем можно пристыковать ComboBox справа.

Помните, что с док-панелью очень важна последовательность, в которую вы помещаете элементы.

HTH

2
ответ дан 1 December 2019 в 21:37
поделиться
Другие вопросы по тегам:

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