Окно не обновляется при изменении ViewModel - PullRequest
1 голос
/ 20 апреля 2011

У меня есть приложение WPF, использующее MVVM;когда я изменяю ViewModel в моем классе ViewModel главного окна, новый пользовательский элемент управления не отображается в окне ... оригинальный остается.ViewModel выглядит следующим образом:

public class MainWindowViewModel : ViewModelBase { </p> <pre><code> public ViewModelBase Workspace; public MainWindowViewModel() { var w = new CustomerDetailsViewModel(); SetActiveWorkspace(w); } void NavigationService_ViewChanged(object sender, ViewChangedEventArgs e) { SetActiveWorkspace(e.View); } void SetActiveWorkspace(ViewModelBase workspace) { Workspace = workspace; } }

Мой XAML выглядит следующим образом: < ContentControl Content="{Binding Path=Workspaces}" >

Сервис навигации EventChanged eventзапускается, и метод SetActiveWorkspace вызывается с правильным представлением в аргументе.Однако после этого представление не перезагружается.Что мне здесь не хватает?

1 Ответ

2 голосов
/ 20 апреля 2011

Ваше свойство Workspace не вызывает событие PropertyChanged. Это должно выглядеть так:

private ViewModelBase _workspace;

public ViewModelBase Workspace
{
    get { return _workspace; }
    set 
    {
        if (value != _workspace)
        {
            _workspace = value;

            // This raises the PropertyChanged event to let the UI know to update
            OnPropertyChanged("WorkSpace");
        }
    }
}

Убедитесь, что ваш ViewModelBase реализует INotifyPropertyChanged

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