Caliburn Micro — пользовательский интерфейс не обновляется во второй раз

Я работаю над проектом WPF, использующим Caliburn Micro. Я столкнулся с проблемой, когда элементы управления в представлении не обновляются при втором открытии представления. С первого раза привязка данных работает нормально.

Когда я прохожу через ViewModel во второй раз, когда представление вызывается, я вижу, что свойства, связанные с данными, получают новые значения и вызывают NotifyOfPropertyChange(), но изменение не отражается в пользовательском интерфейсе. Любые идеи? Мой вид наследует PropertyChangedBase()

Ниже приведены мои свойства в модели просмотра

public string Info
{
    get { return _info; }
    set { _info = value; NotifyOfPropertyChange(() => Info); }
}

public IEnumerable<ComponentInfo> BondableComponents
{
    get { return _bondableComponents; }
    set { _bondableComponents = value; NotifyOfPropertyChange(() => BondableComponents); }
}

и Xaml

<TextBox Name="Info" Grid.Row="0" Grid.Column="0" IsReadOnly="True"/>
<DataGrid ItemsSource="{Binding BondableComponents}">

person muruge    schedule 22.08.2012    source источник
comment
Можете ли вы показать код, который открывает и закрывает ваш вид?   -  person nemesv    schedule 22.08.2012
comment
Вы заполняете данные в OnInitialize вместо OnActivate или OnViewLoaded?   -  person Derek Beattie    schedule 22.08.2012


Ответы (1)


BindableCollection<ComponentInfo> Bondable

Следует использовать, если в обновлении появятся новые элементы... --edit-- ответили на GitHub.

person mvermef    schedule 31.07.2015
comment
OP уже вызывает события уведомления о свойствах, если коллекция заменена другой коллекцией, которую пользовательский интерфейс все равно должен обновлять, нет упоминания о добавлении/удалении элементов из коллекции. Что делает привязываемая коллекция для решения этой проблемы? - person Charleh; 01.01.2017