我正在尝试创建一个 ListView 项,在框的最右侧有一个删除按钮。该按钮始终位于文本的右侧,但我希望它“固定”在控件的右侧。我尝试了以下方法:
DockPanel:
DockPanel.Dock="右"
HorizontalAlignment="右"
HorizontalContentAlignment="右"
HorizontalConteltAlignment="拉伸(stretch)"
(不是最后两个同时出现)
并在不指定停靠位置的情况下向停靠面板添加额外区域
网格:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
和
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
和
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
等在这两种情况下唯一改变按钮位置的是改变按钮的左边距。但是容器是可以调整大小的,所以我真的希望按钮保持在控件的右侧。有谁知道为什么水平对齐、水平内容对齐、额外的列或不同的宽度大小似乎都不会影响按钮的位置?我能做什么?
P.S.:虽然我知道其他几个帖子也有同样问题的人,但到目前为止,他们接受的答案对我的情况没有任何帮助。
最佳答案
将 ListView
的 HorizontalContentAlignment
属性设置为 Stretch
。这将拉伸(stretch)子元素以填充 ListView 的分配空间:
<ListView HorizontalContentAlignment="Stretch" ... >
然后使用您的第一个 Grid 方法,但交换 ColumnDefinition
。
按钮的列宽设置为 Auto
,这样它将根据内容(按钮)调整列的大小。文本的设置为 *
,这样它会占用尽可能多的空间。因此,在为第 2 列的按钮分配固定空间后,第 1 列将获得所有剩余空间。
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/> <!-- for the text -->
<ColumnDefinition Width="Auto"/> <!-- for the delete button -->
</Grid.ColumnDefinitions>
关于wpf - 在 listItem wpf 中将按钮右对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32100599/