Форум программистов, компьютерный форум, киберфорум
Наши страницы

C#: WPF, UWP и Silverlight

Войти
Регистрация
Восстановить пароль
 
javasharp1
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 16
#1

Как получить имя выделенного элемента listbox? - C# WPF

06.12.2016, 17:56. Просмотров 302. Ответов 4

Заполняю listbox через привязку(binding), теперь нужно записать в переменную имя выделенного элемента. Если бы заполнял через массив, а не биндинг, то решил бы задачу таким образом:
C#
1
var name = listbox.SelectedItem.ToString();
используя событие selectedchanged.
Но но в моем случае контрол заполняется через биндинг, и я не могу получить имя выделенного элемента стандартным способом.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2016, 17:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как получить имя выделенного элемента listbox? (C# WPF):

Получить текст выделенного элемента в ListBox - C# WPF
Здравствуйте уважаемые форумчане, помогите пожалуйста разобраться с одной проблемой: Сам листбокс <Window.Resources> ...

Как по событию TreeView_SelectedItemChanged получить индекс выделенного элемента - C# WPF
Здравствуйте. Как по событию TreeView_SelectedItemChanged получить индекс выделенного элемента?

Как получить Uid из вложенного элемента в listBox - C# WPF
Доброй ночи, только начал изучать wpf и c#, и столкнулся с непредвиденными трудностями со стороны listbox'a. А именно, не могу достать Uid...

Как задать Background для выделенного listBox - C# WPF
Делаю таким образом <ListBox.ItemContainerStyle> <Style TargetType="{x:Type ListBoxItem}"> ...

ListView изменение выделенного элемента - C# WPF
Всем доброго времени суток!!! Подскажите, возможно ли изменить в listview выбранную строку так: было 1 2 3 чтобы...

Получить текст выделенного ListBoxItem - C# WPF
не могу получить текст выделенного ListBoxItem ошибка "Ссылка на объект не указывает на экземпляр объекта." <ListBox...

4
novikov.ea
661 / 583 / 152
Регистрация: 10.06.2011
Сообщений: 1,101
06.12.2016, 18:01 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Ну так, также используем SelectedItem:
C#
1
var name = (listbox.SelectedItem as MyClass).Name;
Цитата Сообщение от javasharp1 Посмотреть сообщение
Если бы заполнял через массив, а не биндинг
А в чём суть и отличия данных способов? В любом случае же источник данных задаётся в ItemsSource
1
javasharp1
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 16
06.12.2016, 18:04  [ТС] #3
novikov.ea, если заполняю напрямую через массив, то получается свойством selecteditem по событию получить имя выделенного элемента, а если через привязку, то в ответ на это событие ничего не записывается
0
novikov.ea
661 / 583 / 152
Регистрация: 10.06.2011
Сообщений: 1,101
06.12.2016, 18:31 #4
Цитата Сообщение от javasharp1 Посмотреть сообщение
если заполняю напрямую через массив
Цитата Сообщение от javasharp1 Посмотреть сообщение
если через привязку
Покажите, что это за способы. Вот это они?
1.
C#
1
listbox.ItemsSource = someArray;
2.
XML
1
<ListBox ItemsSource="{Binding SomeArray}" />
Или какие? Ибо мне не понятно, что вы делаете, как вы делаете и что в итоге выходит.
0
EfimKR
53 / 26 / 10
Регистрация: 24.06.2014
Сообщений: 229
Записей в блоге: 1
10.12.2016, 01:50 #5
javasharp1, использовать привязку с SelectedItem.
XML
1
2
3
4
5
<ListBox ItemSource="{Binding ItemSource}" SelectedItem="{Binding SelectedItem}">
   <ListBox.DataContext>
      <local: ViewModel>
   </ListBox.DataContext>
</ListBox>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class ViewModel : INotifyPropertyChanged
{
   //..................
   public ObservableCollection<SomeEntity> ItemSource;
   public string SelectedItem
   {
      get
      {
         return this.selectedItem;
       }
 
       set
       {
           if (value != this.selectedItem)
           {
               this.selectedItem= value;
               NotifyPropertyChanged();
           }
       }
    }
   //..................
}
При каждом изменении элемента в ListBox будет вызываться setter для SelectedItem. Таким образом у тебя будет доступ ко всему выбранному элементу. + есть готовые базовые реализации использовать которые чуть проще чем голый подход с INotifyPropertyChanged. Я использую Prism.
0
10.12.2016, 01:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2016, 01:50
Привет! Вот еще темы с ответами:

Как получить значение ListBox? - C# WPF
Как получить значение ListBox? Пробовал, но в selectedBook не помещается ничего.. var selectedBook = (string)...

Как получить выделенную строку из listbox - C# WPF
Имеется проблема. Есть листбокс, в нем хранятся пути к файлам. по нажатию на путь, он должен запускаться, но приложение вылетает с ошибкой....

Как получить имя столбца в DataGrid - C# WPF
Подскажите, не могу понять как можно получить имя столбца выделенной ячейки в DataGrid при нажатии мышкой на ячейку, lbl.Content =...

Как из listBox получить все отмеченные checkBox?WPF - C# WPF
&lt;Window xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot; ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru