我在导航到相应视图后在视图模型中消失的参数有问题。
我有这样的导航命令:
private void EditMethod(Person person)
{
var parameters = new NavigationParameters {{"Person", person}};
if (person != null)
regionManager.RequestNavigate(RegionNames.ContentRegion, "PersonEditView", parameters);
}
单击按钮后,命令被正确调用。
在我的ViewModel中,也可以运行navigatedto,并且人对象被传播。
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"];
}
但是,当显示我的视图时,人= null且未显示数据。看来显示的视图已粘到另一个没有填充数据的ViewModel实例。
奇怪的是,ViewModel构造函数是两次运行的,而Onnavigigated仅运行一次。
我正在使用干燥的IOC容器和棱镜7。
根据 @mm8在评论中所说的话 - 错误我最终在我看来得到了两个模型视图声明:
xmlns:ViewModels="clr-namespace:Fitto.Core.Persons.ViewModels"
mvvm:ViewModelLocator.AutoWireViewModel="True"
删除第一个并仅留下Prism自动射击后,一切正常。