Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
 Аватар для Worldmen
5 / 8 / 4
Регистрация: 31.08.2013
Сообщений: 350
WPF

Как получить данные TextBlock из ListBox по нажатию?

05.01.2020, 23:33. Показов 1739. Ответов 4

Студворк — интернет-сервис помощи студентам
Как получить данные TextBlock из ListBox по нажатию?
C#
1
2
3
4
5
6
7
8
9
<ListBox x:Name="lbSectors" Grid.Column="0" Grid.Row="1" SelectionChanged="LbSectors_SelectionChanged">
      <ListBox.ItemTemplate>
          <DataTemplate>
              <WrapPanel>
                  <TextBlock Text="{Binding NamePoint}" x:Name="{Binding Id}"  FontWeight="Bold" />
              </WrapPanel>
          </DataTemplate>
       </ListBox.ItemTemplate>
</ListBox>
Что мне нужно в событии использовать:
  • (sender as ListBox)
  • (sender as DataTemplate)
  • (sender as TextBlock)
Пока ничего не получается.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.01.2020, 23:33
Ответы с готовыми решениями:

Активация вложенного ListBox по нажатию на вложенный textblock
Добрый день уважаемые форумчане. Делаю коллекцию и привязываю ее к ListBox как ItemSource Это Listbox внутри которого коллекция...

Как получить данные из DataGrid по двойному нажатию мыши?
Требуется при двойном нажатии мыши по строке в DataGrid перейти к редактированию записи в другой форме. Как можно прочитать данные из...

Как сделать анимацию изменения текста в textblock по нажатию на кнопку
как сделать анимацию изменения текста в textblock по нажатию на кнопку?

4
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16130 / 11254 / 2888
Регистрация: 21.04.2018
Сообщений: 33,088
Записей в блоге: 2
06.01.2020, 00:46
Worldmen, у вас гремучая смесь из привязок, событий UI элементов, раскопками визуального дерева....

В такой каше вам никто не поможет.

WPF элементы работают с ДАННЫМИ.
Вот у Вас объявлена привязка Text="{Binding NamePoint}". К чему эта привязка?
К свойству элемента коллекции. А где эта коллекция?
Она должна быть привязана в свойстве
XML
1
<ListBox ItemsSorce="{Binding Свойство_с_Коллекцией}"
Но её нет там! Так откуда же берутся элементы для ListBox?!

В WPF события используются крайне редко!
Так как в WPF основной способ передачи значений элементам это привязки, то необходимость в обработке событий практически отсутствует.
Допустим, в вашем случае вместо события надо использовать привязку
XML
1
<ListBox ItemSelected="{Binding Свойство_для_Выделенного_Элемента}"
И тогда вам не нужны ни какие "танцы с бубном". Вы просто берёте выделенный элемент из Свойство_для_Выделенного_Элемента. У этого элемента есть свойство NamePoint и другие свойства - зависит от типа элемента.

Имя элемента x:Name - это не его свойство зависимостей! Не надо задавать привязку к нему. Имя, вообще, лучше не использовать. Только если вам оно нужно для привязок с ElementName.
Это не WinForms, а WPF!

Когда объявляете Шаблон Данных ОЧЕНЬ желательно задавать тип данных для этого шаблона
XML
1
<DataTemplate DataType="local:ТипДанных">
local - это префикс пространства имён. Может быть любым.

Поэтому на ваш вопрос Что мне нужно в событии использовать - ответ НИЧЕГО! Просто не используйте событие!
2
 Аватар для Worldmen
5 / 8 / 4
Регистрация: 31.08.2013
Сообщений: 350
06.01.2020, 16:58  [ТС]
Пока очень плохо разбираюсь с привязками. Есть свойство с типом и привязка к ресурсам:
C#
1
2
3
4
5
6
7
8
public List<PlanCem> PlanCemts;
...
private void ReadFileMenu(object sender, RoutedEventArgs e)
{ 
   ...
  List<PlanCem> pc = new List<PlanCem>();
  lbSectors.ItemsSource = pc;
}
Я хочу вывести в ListBox поле NamePoint из класса:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class PlanCem
    {
        public int Id { get; set; }
        public string NamePoint { get; set; }           // название сектора
        public List<Point> Koordinat { get; set; }      // модифицированные координаты
        public List<RealPoint> RealKoordinat { get; set; } // реальные координаты из файла in4
    }
 
    /// <summary> Реальные координаты </summary>
    public class RealPoint
    {
        public string Name { get; set; }
        public double X { get; set; }
        public double Y { get; set; }
    }
что бы потом выбрать объекты, которые не нужны, удалить их, а оставшиеся сохранить в БД.
XML
1
2
3
4
5
6
7
8
9
10
11
<ListBox x:Name="lbSectors" ItemsSource ="{Binding PlanCem}"
                 SelectedItems="{Binding ????}"
                 Grid.Column="0" Grid.Row="1">
           <ListBox.ItemTemplate>
               <DataTemplate DataType="local: PlanCem">
                   <WrapPanel>
                       <TextBlock Text="{Binding NamePoint}" FontWeight="Bold" />
                   </WrapPanel>
               </DataTemplate>
            </ListBox.ItemTemplate>
</ListBox>
Свойства ItemSelected у ListBox я не нашел,
XML
1
<ListBox ItemSelected="{Binding Свойство_для_Выделенного_Элемента}"
но есть SelectedItems:
XML
1
 SelectedItems="{Binding ????}"
только что там нужно вводить, я не понял.
Тип данных для DataTemplate указал PlanCem (имя класса). Должно быть правильно, но я сомневаюсь:
XML
1
<DataTemplate DataType="local: PlanCem">
0
880 / 559 / 291
Регистрация: 21.11.2012
Сообщений: 1,554
06.01.2020, 17:14
Worldmen,
честно говоря не понял для чего переделывать шаблон айтема листбокса, если все равно будет отображаться простое текстовое поле..

на самом деле вам нужна коллекция объектов класса PlanCem и свойство, отвечающее за "текущее выбранное":

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private ObservableCollection<PlanCem> _planCems
public ObservableCollection<PlanCem> PlanCems
{
    get { return _planCems; }
    set { _planCems = value; OnPropertyChanged(); }
}
 
private PlanCem _actualPlanCem;
public PlanCem ActualPlanCem
{
    get { return _actualPlanCem; }
    set { _actualPlanCem= value; OnPropertyChanged(); }
}
далее сама привязка:
XML
1
2
<ListBox ItemsSource="{Binding PlanCems}" SelectedItem="{Binding ActualPlanCem, Mode=TwoWay}" DisplayMemberPath="NamePoint">
</ListBox>
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16130 / 11254 / 2888
Регистрация: 21.04.2018
Сообщений: 33,088
Записей в блоге: 2
06.01.2020, 18:13
Цитата Сообщение от Worldmen Посмотреть сообщение
Свойства ItemSelected у ListBox я не нашел,
.......
но есть SelectedItems:
Описка SelectedItem.
Обратите внимание БЕЗ s на конце. Это разные свойства.

Добавлено через 2 минуты
Цитата Сообщение от Worldmen Посмотреть сообщение
Я хочу вывести в ListBox поле NamePoint из класса:
Ответ уже дал hamin.

НО... что у вас конструкция?
XML
1
2
3
4
5
               <DataTemplate DataType="local:PlanCem">
                   <WrapPanel>
                       <TextBlock Text="{Binding NamePoint}" FontWeight="Bold" />
                   </WrapPanel>
               </DataTemplate>
Зачем для ОДНОГО элемента вы задаёте отдельную ПАНЕЛЬ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.01.2020, 18:13
Помогаю со студенческими работами здесь

ListBox. По нажатию получить свойство объекта
Здравствуйте, возникла одна проблема, перерыл интернет не нашёл решения. У меня в ListBox содержется 3 элемента: 2-TextBlock и 1-Image, эти...

Как реализовать по нажатию на выбранный элемент ListBox вывод по нему какой либо информации в другом ListBox
Приветствую... Нужна ваша помощь. Недавно начал разбираться с шарпами. Знание синтаксиса хромает... Решил написать программу которая будет...

Как из textblock программно получить геометрию
добрый день!! подскажите, если кто сталкивался, как программно получить геометрию текстблока, также как в редакторе блендер в меню:...

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

Вывод информации в WebBrowser по нажатию на TextBlock в TreeView
У меня есть база данных c blob полем и по нажатью на TextBlock внутри TreeView на WebBrowser должно выводится информация внутри blob поля


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru