wpf - WPF工具栏项目Horizo​​ntalAligment =“右”

标签 wpf xaml toolbar alignment

是否可以使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工具栏项目Horizo​​ntalAligment =“右”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2201685/

相关文章:

c# - 跨多个程序集应用全局样式

ios - addSubview 不显示工具栏顶部和底部

WPF 形状几何缩放而不影响笔划

wpf - wpf 的 Arcgis 运行时 - 集群器内存泄漏

c# - 此类型分配错误是 WCF 或 Windows Workflow Foundation 4.5 中的错误吗?

Android:如何从 RecyclerViewHolder 访问工具栏?

css - 删除 firefox 工具栏按钮和下拉标记之间的间隙

wpf - 如何使运行的WPF应用程序窗口透明?

wpf - 在 WindowsFormsHost 之上呈现 WPF 控件

wpf - 如何将输入键绑定(bind)到wpf中的itemscontrol