Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
2 / 2 / 3
Регистрация: 19.04.2018
Сообщений: 100

Нумерация элементов ListBox

03.08.2020, 17:10. Показов 6656. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть ListBox -
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        <ListBox ItemsSource="{Binding Commands}" HorizontalAlignment="Left" Height="515" Margin="423,52,0,0" VerticalAlignment="Top" Width="310">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid Margin="5">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="30"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
 
                        <TextBlock Grid.Column="0" Text="Здесь нужно вывести номер строки"/>
                        <TextBlock Grid.Column="1" Text="{Binding Angles}"/>
                        <TextBlock Grid.Column="1" Text="{Binding Description}"/>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
Так как строки выглядят однообразно и их много, появилась идея пронумеровать их от 1 до n.
Пытался найти к чему привязать свойство Text у TextBlock, но из вариантов только создать переменную index и привязываться к ней. Можно ли сделать как у DataGrid?
C#
1
2
3
4
private void LoadingRow(object sender, DataGridRowEventArgs e)
{
    e.Row.Header = (e.Row.GetIndex() + 1).ToString();
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.08.2020, 17:10
Ответы с готовыми решениями:

Автоматическая нумерация элементов в ListBox
Всем привет. Задача. Есть ListBox к которому привязан List&lt;Type&gt; через ItemsSource. Type - моя собственная структура данных со...

Нумерация в listbox
while (reader.Read()) { string F = reader.GetString(2); string R =...

ListBox - как задать DisplayMemberPath для элементов входящих в ListBox, если они разные, а не одного класса?
ListBox - как задать DisplayMemberPath для каждого из типов элементов входящих в ListBox? Или хотя бы для одного из типов, например, для...

29
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
07.08.2020, 16:24
Студворк — интернет-сервис помощи студентам
proa33, из документации:
ПримечаниеНекоторые функции модели автоматизации пользовательского интерфейса работают неправильно, если ItemsControl содержит дублирующиеся объекты. Если объект встречается несколько раз, в дереве автоматизации появляется только первый экземпляр. (Два объекта x и y считаются повторяющимися, если Object.Equals(x, y) возвращает true.)


Похоже перестраховка с ItemContainerGenerator.IndexFromContainer(listBoxItem) излишняя.
ItemsControl всё равно не гарантирует правильной работы, если в коллекции есть одинаковые элементы.
0
1596 / 601 / 185
Регистрация: 05.12.2015
Сообщений: 970
07.08.2020, 19:31
Элд Хасп,
ItemsControl и ListBox имеют разные контейнеры, несовместимые, для Item
для них не получится создать общий шаблон.
для ListBox сделал с AttachedPrperty
можно также подключить свой шаблон для колонки индексов из ресурсов
но опять таки, по ходу тестирования вылезет куча багов.
Вложения
Тип файла: zip index.zip (11.8 Кб, 3 просмотров)
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
07.08.2020, 20:17
Цитата Сообщение от proa33 Посмотреть сообщение
ItemsControl и ListBox имеют разные контейнеры, несовместимые, для Item
Вот я и колдую с этим.
Пытаюсь найти способ как определить тип контейнера.
Пока не нашёл.

Цитата Сообщение от proa33 Посмотреть сообщение
для ListBox сделал с AttachedPrperty
Будет врямя - проверю.
0
1596 / 601 / 185
Регистрация: 05.12.2015
Сообщений: 970
07.08.2020, 23:52
Элд Хасп,
сделал для ItemsControl
в примере тестируется на DataGrid, ListBox, ItemsControl
протестируйте, если что - исправим
Вложения
Тип файла: zip index.zip (13.0 Кб, 1 просмотров)
1
1596 / 601 / 185
Регистрация: 05.12.2015
Сообщений: 970
08.08.2020, 10:51
Элд Хасп,
в DataGrid внес изменения, иначе индекс приклеивается к первой клетке
сейчас находится за пределами ряда
когда еще наберутся изменения выложу код.

сейчас одна проблема - статическая ссылка, которая не даст освободить ресурс
решение в рамках AP только одно - явное освобождение через вызов АР-свойства например IsCleared.
либо создание кастомных классов - кода там не будет, все будет работать через встроенный объект.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
08.08.2020, 11:19
proa33, вроде работает.
Багов не заметил.

Вы можете сделать отдельную тему чтобы включить её сюда: Темы с реализациями присоединённых свойств (Attached Property) ?

Добавлено через 3 минуты
Цитата Сообщение от proa33 Посмотреть сообщение
сейчас одна проблема - статическая ссылка, которая не даст освободить ресурс
Какая?

И рекомендация: свойство-константу надо устанавливать не так
C#
1
2
3
4
5
6
7
8
9
10
        static DataTemplate DefaultTemplate
        {
            get
            {
                string ts = "<DataTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">" +
                              "<TextBlock Text=\"{ Binding}\" TextAlignment=\"Right\" Background=\"{ Binding Foreground, RelativeSource = { RelativeSource AncestorType = ListBox }}\" Foreground=\"{ Binding Background, RelativeSource = { RelativeSource AncestorType = ListBox }}\" Margin = \" 0, 0.5, 4, 0.5\" Padding = \"1, 0, 1, 0\" />" +
                          "</DataTemplate>";
                return XamlReader.Parse( ts ) as DataTemplate;
            }
        }
А так:
C#
1
2
3
4
5
6
7
8
9
10
11
        static DataTemplate DefaultTemplate { get; } = XamlReader.Parse
        (
@"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">
    <TextBlock Text=""{ Binding}""
                TextAlignment=""Right""
                Background=""{Binding Foreground, RelativeSource = {RelativeSource AncestorType=ListBox}}""
                Foreground=""{Binding Background, RelativeSource = {RelativeSource AncestorType=ListBox}}""
                Margin=""0, 0.5, 4, 0.5""
                Padding = ""1, 0, 1, 0"" />
</DataTemplate>"
        ) as DataTemplate;
Добавлено через 53 секунды
В первом варианте при каждом обращение значении вычисляется заново.
Во втором, только один раз при инициализации типа.

Добавлено через 2 минуты
Цитата Сообщение от proa33 Посмотреть сообщение
когда еще наберутся изменения выложу код.
Да, погоняйте ещё код.
Как посчитаете, что он готов для использования сделайте - сделайте отдельную тему с объяснениями.

Я тоже пока свою реализацию буду продумывать.
0
1596 / 601 / 185
Регистрация: 05.12.2015
Сообщений: 970
08.08.2020, 19:49
Элд Хасп,
посмотрите этот вариант перед созданием темы
Вложения
Тип файла: zip index.zip (15.2 Кб, 4 просмотров)
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
09.08.2020, 15:20
Цитата Сообщение от proa33 Посмотреть сообщение
посмотрите этот вариант перед созданием темы
Работает классно!

Единственно, мне не нравится использование box1 из ресурсов.
На мой взгляд, лучше создать CustomControl для заголовка строки (ItemsControlRowHeader) и шаблон по умолчанию для него.
Добавить, AP-свойство (RowHeaderTemplate) через которое можно его менять.
Это будет концептуально ближе к дефолтной WPF реализации.
0
1596 / 601 / 185
Регистрация: 05.12.2015
Сообщений: 970
09.08.2020, 19:52
Элд Хасп,

новый вариант в теме:
Автоматические номера строк в ItemsControl через AttachedProperty. Пример реализации
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
09.08.2020, 21:11
Цитата Сообщение от proa33 Посмотреть сообщение
новый вариант в теме:
Я его уже внёс в Темы с реализациями присоединённых свойств (Attached Property).
Вам сообщение разве не пришло?

Добавлено через 1 минуту
Я потом дополню его ещё своей реализацией.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.08.2020, 21:11

Автоматическая нумерация ListBox.DataSource
Добрый вечер! Как сделать автоматическую нумерацию в ListBox.DataSource? Нашел способ через изменения формата, но не понимаю что...

Найти сумму номеров отрицательных элементов последовательности,в которой нумерация элементов начинается с единицы.
Найти сумму номеров отрицательных элементов последовательности,в которой нумерация элементов начинается с единицы. на Python

Возможно ли перетаскивание элементов (drag/drop) внутри listbox и между двумя listbox?
Подскажите возможно ли перетаскивание элементов внутри listbox и между двумя listbox, если возможно то как осуществить dragndrop, если нет...

Нумерация элементов
Всем привет! У меня есть задача пронумеровать html элементы. Что я имею ввиду. Вот пример &lt;!DOCTYPE html PUBLIC...

Передача элементов массива из ListBox в ListBox
Здравствуйте и приятного времени суток. Заранее извиняюсь, если вопрос по очень легкой теме, я очень слаб в программировании, иначе бы не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru