В mvvm мы можем вызвать методы viewmodel из представления? - PullRequest
0 голосов
/ 16 марта 2011

Я пытаюсь получить параметры URI в моих моделях просмотра.Я попробовал несколько вещей, но ничего не работает, как ожидалось ... Я хотел бы имитировать методы PageNavigatedTo и OnNavigatedFrom страницы, поэтому я написал:

В моем классе ViewBase (унаследованном от Page):


public ViewModelBase ViewModel
{
    get { return this.DataContext as ViewModelBase; }
    protected set
    {
        if (value != this.DataContext)
        {
            this.DataContext = value;
        }
    }
}

protected override void OnNavigatedFrom(NavigationEventArgs e)
{
    base.OnNavigatedFrom(e);
    this.ViewModel.OnNavigatedFrom(e.Uri);
}

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    this.ViewModel.OnNavigatedTo(e.Uri);
}

и в моем классе ViewModelBase:


public virtual void OnNavigatedFrom(Uri uri)
{
}

public virtual void OnNavigatedTo(Uri uri)
{
}

Что не так, если я это сделаю?

Заранее спасибо ...

1 Ответ

2 голосов
/ 16 марта 2011

Обычно в MVVM вы используете какую-либо форму командования или альтернативу, которую предоставляют многие инфраструктуры MVVM.Я бы серьезно подумал об использовании инфраструктуры MVVM, такой как Prism , MVVM Light Toolkit или Caliburn.Micro .Все они имеют свои собственные механизмы вызова глаголов в модели представления из представления.

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