在 listItem wpf 中将按钮右对齐

align a button to the right in a listItem wpf

我正在尝试创建一个列表视图项,在框的最右侧有一个删除按钮。该按钮始终位于文本的右侧,但我希望它“固定”在控件的右侧。我尝试了以下方法:

DockPanel:

DockPanel.Dock="Right"

HorizontalAlignment="Right"

HorizontalContentAlignment="Right"

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.: 虽然我知道有同样问题的人发表了其他几篇文章,但到目前为止,他们接受的 none 答案对我的情况有所帮助。

ListViewHorizontalContentAlignment 属性 设置为 Stretch。这会拉伸子元素以填充分配给 ListView 的 space:

<ListView HorizontalContentAlignment="Stretch" ... >

然后使用您的第一个 Grid 方法,但交换 ColumnDefinition。 按钮的列宽设置为 Auto,这样它将根据内容(按钮)调整列的大小。文本的设置为 *,这样它会占用尽可能多的 space。因此,为第 2 列的按钮分配一个 fixed space 后,第 1 列将获得所有剩余的 space.

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="*"/> <!-- for the text -->
    <ColumnDefinition Width="Auto"/> <!-- for the delete button -->
</Grid.ColumnDefinitions>