导航到对应的视图后,我的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。
答案 0 :(得分:0)
根据@ mm8在评论中所说的-由于错误,我在视图中最终得到了两个ModelView声明:
xmlns:ViewModels="clr-namespace:Fitto.Core.Persons.ViewModels"
mvvm:ViewModelLocator.AutoWireViewModel="True"
删除第一个并仅保留Prism自动接线后,一切正常。