在 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 答案对我的情况有所帮助。
将 ListView
的 HorizontalContentAlignment
属性 设置为 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>
我正在尝试创建一个列表视图项,在框的最右侧有一个删除按钮。该按钮始终位于文本的右侧,但我希望它“固定”在控件的右侧。我尝试了以下方法:
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 答案对我的情况有所帮助。
将 ListView
的 HorizontalContentAlignment
属性 设置为 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>