У меня есть приложение, которое содержит иерархию View/Viewmodels.Сохраняющиеся данные между изменениями MVVM View
ViewModelBase содержит два ViewModels
private AViewModel _aViewModel = new AViewModel();
private BViewModel _bViewModel = new AViewModel();
Мой XAML связывает DATACONTROL к
private ViewModelBase _currentView {get; set;}
public ViewModelBase CurrentView
{
get
{
return _currentView;
}
set
{
_currentView = value;
RaisePropertyChanged("CurrentView");
}
}
И решает, какой вид отображения на основе DataTemplates
<DataTemplate DataType="{x:Type vm:AViewModel}">
<vw:AView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:BViewModel}">
<vw:BView />
</DataTemplate>
Все это прекрасно работает, но я «Не знаю, как сохранить данные между« Просмотр изменений ». Скажем, например, что AViewModel содержит строку под названием «Тест» и имеет двустороннюю привязку в AView. Изменив представление с помощью CurrentView = _bviewmodel, мои данные не будут сохраняться, когда я вернусь к _aviewmodel. Каков наилучший способ убедиться, что данные остаются между изменениями вида, а не созданием новой пустой модели просмотра каждый раз. Мне нужно загрузить _currentView в _aViewModel, а затем обратно в _currentView
Поскольку вы не распоряжаетесь 'AViewModel' и привязываетесь к строке под названием' Test' с двусторонней привязкой, данные должны быть сохранены уже. Возможно, добавьте точку останова в метод 'set'' AViewModel.Test' и убедитесь, что значение действительно установлено. Также добавьте точку останова, где вы меняете «CurrentView» и убедитесь, что 'AViewModel.Test' еще установлен. – Rachel
согласны с rachel, если ваши _aViewModel и _bViewModel не выходят за рамки, данные останутся в памяти. – Anton
Значение все еще существует, когда я добавляю точку останова в AViewmodel (Set Test), но не возвращается обратно в CurrentView в ViewModelBase - я могу получить значение для ViewModelBase посредником, возвращая значение обратно, но это снова будет потеряно в следующий раз Я установил «currentView» - я предполагаю, что каждый раз создаю новую модель представления, но не уверен, как просто передать ссылку. – Oli