2015-08-19 3 views
1

Я пытаюсь создать элемент списка с кнопкой удаления в правой части окна. Кнопка всегда справа от текста, но я бы предпочел, чтобы она «застряла» с правой стороны элемента управления. Я попытался следующие:выровнять кнопку вправо в 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 .: Хотя я знаю, что люди, имеющие ту же проблему, были приняты еще несколько сообщений, ни один из ответов, которые они приняли, пока не помогли моей ситуации.

+1

Вы пробовали настройки в ListView в '' HorizontalContentAlignment' к Stretch', и использовать 1-ый метод сетки, но переворачивать ColumnDefinition, то есть ''? – Ignatius

+1

О, ничего себе. Да, я сделал только EXCEPT, что я устанавливал HorizontalContentAlignment в каждом элементе вместо самого ListView. Спасибо, что указали – user3345626

+0

Итак, это работает? – Ignatius

ответ

0

ListViewHorizontalContentAlignment Недвижимость Stretch. Это растягивает дочерний элемент, чтобы заполнить выделенное пространство ListView:

<ListView HorizontalContentAlignment="Stretch" ... > 

Затем с помощью 1-го Сетки метода, но поменять на ColumnDefinition. Ширина столбца для кнопки установлена ​​в Auto так, чтобы размер столбца был доведен до его содержимого (кнопка). И один для текста установлен на *, так что он займет как можно больше места. Поэтому после выделения места для кнопки в 2-й колонке фиксируется, первый столбец получит все оставшееся пространство.

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