powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Обновление ItemsSorce у ComboBox
2 сообщений из 2, страница 1 из 1
Обновление ItemsSorce у ComboBox
    #37645794
Гед
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в классе есть следующее свойство: IEnumerable<ISection> Sections();
в View у комбобокса на него забинден ItemSource.
Код: xml
1.
2.
3.
4.
5.
<ComboBox HorizontalAlignment="Left" Margin="72,12,0,0" VerticalAlignment="Top" Width="161.333"
	ItemsSource="{Binding Sections}" 
        SelectedItem="{Binding SelectedSection, Mode=TwoWay}"
	IsEnabled="{Binding ElementName=chbSection, Path=IsChecked}">
</ComboBox> 


Если где нибудь в ViewModel я изменяю эту коллекцию (добавляю, удаляю элементы) значения в комбобоксе не изменяются.
Код: c#
1.
2.
3.
4.
5.
6.
private void DeleteSection()
{
       MyClass.RemoveSection(SelectedSection);
       SelectedSection = null;
       RaisePropertyChanged("Sections");
}


Реализация возврата коллекции в классе MyClass:
Код: c#
1.
2.
3.
4.
5.
private readonly List<ISection> _sections;
public IEnumerable<ISection> Sections()
{
    return _sections;
}


если делаю так
Код: c#
1.
2.
3.
4.
5.
public IEnumerable<ISection> Sections()
{
    foreach (ISection section in _sections)
        yield return section;  
}


то все работает.
Это вообще правильно? Или надо как то по другому делать?

П.с. Используется библиотека MVVM Light Toolkit
...
Рейтинг: 0 / 0
Обновление ItemsSorce у ComboBox
    #37645822
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)
private readonly List<ISection> _sections;
public IEnumerable<ISection> Sections()
{
return _sections;
}


Это не работает потому, что коллекция у вас не меняется. Ссылка остается одинаковой после изменения элементов, контрол проверяет что коллекция таже самая и не обновляется.

2) Используйте ObservableCollection или напишите свою , с реализованными INotifyPropertyChanged, INotifyCollectionChanged/

P.S. Имхо, так читабельнее
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
private readonly List<ISection> _sections;
public IEnumerable<ISection> Sections
{
    get
    {
        return _sections;
    }
}
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Обновление ItemsSorce у ComboBox
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]