Страницы

Поиск по вопросам

пятница, 11 января 2019 г.

binding коллекции к listbox в xaml

У меня есть коллекция public ObservableCollection MyCollection у класса MyClass есть интовое свойство.
Так же есть листбокс, который я хочу заполнить объектами этой коллекции, при нажатии на каждый элемент в текстбоксе должно высвечиваться свойство выбранного элемента, но писать listBox1.DataSource/ItemsSource = ... - нельзя, надо делать биндинг только в xaml'e и я никак не разберусь, как это реализовать. коллекция заполнена и инициализирована


Ответ

Нужно завести свойство выбранного элемента в коллекции (Не забудьте о реализации INotifyPropertyChanged):
public MyClass SelectedItem {get; set; }
Далее в xaml делаете привязку к этому свойству:

UPDATE
Приведу код целиком:
// модель представления элемента коллекции public sealed class CollectionItemVm : BaseVm { public int IntProperty { get { return _intProperty; } set { SetProperty(ref _intProperty, value); } } private int _intProperty; }
// модель представления главного окна public sealed class MainVm : BaseVm { public ObservableCollection MyCollection { get { return _myCollection ?? (_myCollection = new ObservableCollection()); } } private ObservableCollection _myCollection;
public CollectionItemVm SelectedItem { get { return _selectedItem; } set { SetProperty(ref _selectedItem, value); } } private CollectionItemVm _selectedItem;
public MainVm() { MyCollection.Add(new CollectionItemVm { IntProperty = 1 }); MyCollection.Add(new CollectionItemVm { IntProperty = 2 });
SelectedItem = MyCollection.Last(); } }
// представление главного окна
BaseVm реализация INotifyPropertyChanged. WpfApplication4.ViewModels - пространство имен, в котором расположен класс MainVm

Комментариев нет:

Отправить комментарий