Сохранение данных между изменениями представления MVVM - PullRequest
1 голос
/ 01 февраля 2012

У меня есть приложение, которое содержит иерархию View / Viewmodels.

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 содержит строку с именем «Test» и имеет двухстороннюю привязку в AView.Изменяя представление с помощью CurrentView = _bviewmodel, мои данные не сохранятся, когда я вернусь к _aviewmodel - это лучший способ убедиться, что любые данные остаются между изменениями представления, а не каждый раз создавать новую пустую модель представления.Я должен получить _currentView для _aViewModel и затем вернуться к _currentView

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Должен был опубликовать мой AView xaml - Внутри это было

 <UserControl.DataContext>
    <vm:AViewModel></vm:AViewModel>
</UserControl.DataContext>

Похоже, я глупо создавал новую модель представления внутри Xaml каждый раз, когда менял вид. Спасибо всем за то, что указали мне правильное направление. Я удалил это из Xaml, и теперь все работает нормально.

0 голосов
/ 01 февраля 2012

Данные должны быть постоянными. Убедитесь, что вы не создаете новые ViewModels каждый раз, когда меняете CurrentView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...