powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как колонку в ListView выровнять вправо из C#?
12 сообщений из 12, страница 1 из 1
Как колонку в ListView выровнять вправо из C#?
    #39300305
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Везде примеры, как на XAML сделать, а как из C#?
...
Рейтинг: 0 / 0
Как колонку в ListView выровнять вправо из C#?
    #39300315
FullKettle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13thВезде примеры, как на XAML сделать, а как из C#?
MVVM?
...
Рейтинг: 0 / 0
Как колонку в ListView выровнять вправо из C#?
    #39300325
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13th,

не очень понятно, что нужно выровнять, содержимое колонки или саму колонку?
...
Рейтинг: 0 / 0
Как колонку в ListView выровнять вправо из C#?
    #39300397
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes, количество и содержимое колонок заранее не известно, я их добавляю в момент появления DataContext-а. Заголовок надо выравнять по центру. Содержимое - вправо. Ну и обработчики на Click подобовлять - для сортировки.
...
Рейтинг: 0 / 0
Как колонку в ListView выровнять вправо из C#?
    #39300474
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13th,

почему ListView, а не DataGrid? есть какие то причины?
сам я этим гов... не пользуюсь, но глянул и сходу нашел 100500 багов, по этому мой вам совет юзайте DG не кушайте кактус.
Задать HorizontalAligment нельзя, так как
ListViewItem это наследованный ListBoxItem с переопределенным шаблоном, который содержит
GridViewRowPresenter
Этот пресентер не панель и в себе панелей не содержит, наследован фактически от FrameworkElement и все свойства своим детям задает локально.
То есть там в сущности это выглядит так:
<GridViewRowPresenter>
<TextBlock HorizontalAligmnt="Left" ... />
<ContentPresenter HorizontalAligmnt="Left" ... />
</GridViewRowPresenter>
в DataGrid всё есть, используйте лучше его, если у него шаблон хорошо проработать, будет в 1000 раз лучше этого убожества.

сходу попробовал задать стиль для заголовка этого чуда через:
<GridViewColumn Header="Column2" CellTemplate="{StaticResource CellTemplateColumn2}" HeaderContainerStyle="{StaticResource Style1}" />
эффект слегка обескураживает :)
...
Рейтинг: 0 / 0
Как колонку в ListView выровнять вправо из C#?
    #39300477
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поглядел я внимательнее:
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
</Style>

вот решение проблемы, все ячейки станут растянутыми по колонке, а содержимое ячеек уже можно выравнивать
...
Рейтинг: 0 / 0
Как колонку в ListView выровнять вправо из C#?
    #39300519
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtesпоглядел я внимательнее:
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
</Style>

вот решение проблемы, все ячейки станут растянутыми по колонке, а содержимое ячеек уже можно выравнивать

Так я и сам могу, на гугле не забанен. Вопрос был - на C#?
...
Рейтинг: 0 / 0
Как колонку в ListView выровнять вправо из C#?
    #39300528
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtesпочему ListView, а не DataGrid? есть какие то причины?
сам я этим гов... не пользуюсь, но глянул и сходу нашел 100500 багов, по этому мой вам совет юзайте DG не кушайте кактус.

У меня было WTL-окошко, я переделал его на WPF. Вместо ListViewCtrl заюзал DataGrid, и, если честно, охренел.
Строка целиком при select-е не закрашивается, клики по строке выбирают элемента только если попадаешь в число, хавает некоторые сообщения от клавиатуры.
И тут я открываю пример ListView - блин, выглядит в 100 раз лучше. Естественно, я попытался DataGrid на него заменить.
...
Рейтинг: 0 / 0
Как колонку в ListView выровнять вправо из C#?
    #39300550
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13thСтрока целиком при select-е не закрашивается, клики по строке выбирают элемента только если попадаешь в число, хавает некоторые сообщения от клавиатуры.
И тут я открываю пример ListView - блин, выглядит в 100 раз лучше. Естественно, я попытался DataGrid на него заменить.
1ая проблема: у DataGrid есть 2 параметра:
SelectionMode="Single\Extended"
и
SelectionUnit="Cell\CellOrRowHeader\FullRow"
при выборе FullRow выделяется вся строка (на уровне свойств)
DataGrid устроен значительно сложнее чем ListView, по этому для его применения необходимо хорошо разобраться из чего он состоит и как работает.
Если говорить по простому, то это набор ItemsControl'ов по вертикали (строки) и горизонтали (ячейки).
То есть в режиме FullRow, необходимо определить в шаблоне DataGridRow визуализации этого выделения по свойству DataGridRow.IsSelected, а для выделения Cell\CellOrRowHeader для DataGridCell.IsSelected, это разные свойства.
Если зафигачить хорошие шаблоны для всего набора элементов DataGrid:
(DataGridRow, DataGridRowHeader, DataGridColumnHeader, DataGridCell, DataGrid) то получится всё красиво и без всяких выкрутасов, при этом поддержка сортировки уже в кармане

2ая проблема: Скорее всего дело было в том, что содержимое ячейки не имело заднего фона. Это довольно распространенная ошибка.
У контрола, к примеру Grid, есть задний фон который определяется свойством Background, фокус в том, что это свойство может быть равно Transparent и быть прозрачным, а может быть {x:Null} и тоже быть прозрачным, но с 1 отличием.
Когда вы щёлкате мышкой на элемент управления, система проверяет, куда вы попали. Происходит этого на основе "маски", которую элемент управления формирует на основе своего содержимого. И прозрачный цвет является фоном, а {x:NULL} его отсутствием, значит, что в случае с Transparent "маска" будет полностью закрывать контрол, а в случае с {x:NULL} это будут дыры в маске (если под фоном {x:NULL} нет другого фона (у данного контрола).
почитайте про Visual объекты и HitTest методы, там всё чётко и ясно написано =)
...
Рейтинг: 0 / 0
Как колонку в ListView выровнять вправо из C#?
    #39301872
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Роман, спасибо за объяснения, но неужели выравнять содержимое ячейки ListView из C# сложнее, чем "зафигачить хорошие шаблоны для всего набора элементов DataGrid: (DataGridRow, DataGridRowHeader, DataGridColumnHeader, DataGridCell, DataGrid)" ?

Опять же, рисовать красивые шаблоны - это ещё уметь надо, а я не художник, хочется чего-то "из коробки". А во внешнем виде - разница значительная.

PS на картинке вот это:
Код: xml
1.
		<DataGrid IsReadOnly="True" SelectionMode="Single" SelectionUnit="FullRow" />
...
Рейтинг: 0 / 0
Как колонку в ListView выровнять вправо из C#?
    #39301880
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13thРоман, спасибо за объяснения, но неужели выравнять содержимое ячейки ListView из C# сложнее, чем "зафигачить хорошие шаблоны для всего набора элементов DataGrid: (DataGridRow, DataGridRowHeader, DataGridColumnHeader, DataGridCell, DataGrid)" ?

Опять же, рисовать красивые шаблоны - это ещё уметь надо, а я не художник, хочется чего-то "из коробки". А во внешнем виде - разница значительная.

PS на картинке вот это:
Код: xml
1.
		<DataGrid IsReadOnly="True" SelectionMode="Single" SelectionUnit="FullRow" />

это всё понятно, но у DataGrid реализация на много шире, сделать такой вот вид списка я могу на коленке за 5 минут в DataGrid'е, тем более "Template'ы" уже есть.
Возможность вставки нового значения, поддержка сортировки и т.д. этого в ListView вроде нет, но могу ошибаться, я по крайней мере не видел, может там какая то своя View'ха для этого используется
...
Рейтинг: 0 / 0
Как колонку в ListView выровнять вправо из C#?
    #39303971
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всёж решил допиливать на DataGrid, по совету Roman Mejtes. Доделывать DG или LV без разницы, но DG больше где может пригодиться.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как колонку в ListView выровнять вправо из C#?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]