是否可以使WPF工具栏中的元素的Right水平对齐方式正确?
<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>
我尝试将内部元素添加到Grid中,并将
ColumnDefinition
分配给Left / Right。我也尝试过StackPanel
。无论我如何尝试,我似乎都无法将ComboBox固定在工具栏的右侧。更新:
<DockPanel LastChildFill="True">
不起作用,它不会像普通元素那样填充ToolBar元素。
最佳答案
进一步的调查显示,为了做到这一点,我需要将Grid
内的ToolBar
宽度设置为,或者如Chris Nicol所说的那样,将DockPanel
内的ToolBar
动态设置为< cc>使用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"/>
由于我所有的元素都在网格上,因此可以通过将
Toolbar
分配到与工具栏相同的行来将ComboBox
放在ToolBar
的顶部。将我的Grid.Row
设置为稍微拉下Margins
以免影响外观之后,它会根据需要运行,没有错误。由于我发现执行此操作的唯一另一种方法是动态设置DockPanel / Grid的Width属性,因此我实际上觉得这是一种更清洁,更有效的方法。
关于wpf - WPF工具栏项目HorizontalAligment =“右”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2201685/