|
Как колонку в ListView выровнять вправо из C#?
|
|||
---|---|---|---|
#18+
Везде примеры, как на XAML сделать, а как из C#? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2016, 14:32 |
|
Как колонку в ListView выровнять вправо из C#?
|
|||
---|---|---|---|
#18+
13thВезде примеры, как на XAML сделать, а как из C#? MVVM? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2016, 14:38 |
|
Как колонку в ListView выровнять вправо из C#?
|
|||
---|---|---|---|
#18+
13th, не очень понятно, что нужно выровнять, содержимое колонки или саму колонку? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2016, 14:49 |
|
Как колонку в ListView выровнять вправо из C#?
|
|||
---|---|---|---|
#18+
Roman Mejtes, количество и содержимое колонок заранее не известно, я их добавляю в момент появления DataContext-а. Заголовок надо выравнять по центру. Содержимое - вправо. Ну и обработчики на Click подобовлять - для сортировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2016, 15:58 |
|
Как колонку в ListView выровнять вправо из C#?
|
|||
---|---|---|---|
#18+
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}" /> эффект слегка обескураживает :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2016, 17:23 |
|
Как колонку в ListView выровнять вправо из C#?
|
|||
---|---|---|---|
#18+
поглядел я внимательнее: <Style TargetType="{x:Type ListViewItem}"> <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> </Style> вот решение проблемы, все ячейки станут растянутыми по колонке, а содержимое ячеек уже можно выравнивать ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2016, 17:28 |
|
Как колонку в ListView выровнять вправо из C#?
|
|||
---|---|---|---|
#18+
Roman Mejtesпоглядел я внимательнее: <Style TargetType="{x:Type ListViewItem}"> <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> </Style> вот решение проблемы, все ячейки станут растянутыми по колонке, а содержимое ячеек уже можно выравнивать Так я и сам могу, на гугле не забанен. Вопрос был - на C#? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2016, 18:09 |
|
Как колонку в ListView выровнять вправо из C#?
|
|||
---|---|---|---|
#18+
Roman Mejtesпочему ListView, а не DataGrid? есть какие то причины? сам я этим гов... не пользуюсь, но глянул и сходу нашел 100500 багов, по этому мой вам совет юзайте DG не кушайте кактус. У меня было WTL-окошко, я переделал его на WPF. Вместо ListViewCtrl заюзал DataGrid, и, если честно, охренел. Строка целиком при select-е не закрашивается, клики по строке выбирают элемента только если попадаешь в число, хавает некоторые сообщения от клавиатуры. И тут я открываю пример ListView - блин, выглядит в 100 раз лучше. Естественно, я попытался DataGrid на него заменить. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2016, 18:17 |
|
Как колонку в ListView выровнять вправо из C#?
|
|||
---|---|---|---|
#18+
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 методы, там всё чётко и ясно написано =) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2016, 18:49 |
|
Как колонку в ListView выровнять вправо из C#?
|
|||
---|---|---|---|
#18+
Роман, спасибо за объяснения, но неужели выравнять содержимое ячейки ListView из C# сложнее, чем "зафигачить хорошие шаблоны для всего набора элементов DataGrid: (DataGridRow, DataGridRowHeader, DataGridColumnHeader, DataGridCell, DataGrid)" ? Опять же, рисовать красивые шаблоны - это ещё уметь надо, а я не художник, хочется чего-то "из коробки". А во внешнем виде - разница значительная. PS на картинке вот это: Код: xml 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2016, 13:08 |
|
Как колонку в ListView выровнять вправо из C#?
|
|||
---|---|---|---|
#18+
13thРоман, спасибо за объяснения, но неужели выравнять содержимое ячейки ListView из C# сложнее, чем "зафигачить хорошие шаблоны для всего набора элементов DataGrid: (DataGridRow, DataGridRowHeader, DataGridColumnHeader, DataGridCell, DataGrid)" ? Опять же, рисовать красивые шаблоны - это ещё уметь надо, а я не художник, хочется чего-то "из коробки". А во внешнем виде - разница значительная. PS на картинке вот это: Код: xml 1.
это всё понятно, но у DataGrid реализация на много шире, сделать такой вот вид списка я могу на коленке за 5 минут в DataGrid'е, тем более "Template'ы" уже есть. Возможность вставки нового значения, поддержка сортировки и т.д. этого в ListView вроде нет, но могу ошибаться, я по крайней мере не видел, может там какая то своя View'ха для этого используется ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2016, 13:15 |
|
|
start [/forum/topic.php?fid=21&fpage=10&tid=1440621]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
173ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 240ms |
total: | 516ms |
0 / 0 |