ViewModel

时间:2019-02-21 16:01:10

标签: c# wpf prism

导航到对应的视图后,我的ViewModel中的参数消失了。

我有这样的导航命令:

    private void EditMethod(Person person)
    {
        var parameters = new NavigationParameters {{"Person", person}};

        if (person != null)
            regionManager.RequestNavigate(RegionNames.ContentRegion, "PersonEditView", parameters);
    }

单击按钮后,命令将被正确调用。

在我的ViewModel中,还将运行OnNavigatedTo,并传播Person对象。

    private Person _selectedPerson;
    public Person Person
    {
        get => _selectedPerson;
        set => SetProperty(ref _selectedPerson, value);
    }

    public PersonEditViewModel()
    {
    }

    public void OnNavigatedTo(NavigationContext navigationContext)
    {
        Person = (Person) navigationContext.Parameters["Person"];
    }

但是当显示我的视图时,Person = null,并且不显示任何数据。看来显示的视图已绑定到另一个ViewModel实例,而该实例没有填充该数据。

奇怪的是,ViewModel构造函数运行两次,而OnNavigatedTo仅运行一次。

我正在使用Dry IoC容器和Prism 7。

1 个答案:

答案 0 :(得分:0)

根据@ mm8在评论中所说的-由于错误,我在视图中最终得到了两个ModelView声明:

         xmlns:ViewModels="clr-namespace:Fitto.Core.Persons.ViewModels"

         mvvm:ViewModelLocator.AutoWireViewModel="True" 

删除第一个并仅保留Prism自动接线后,一切正常。