Код ниже работал над общим экземпляром представления. Теперь то, что я пытаюсь достичь, каждый раз, когда я перехожу к ViewB
Я хочу новый экземпляр представления и его модель просмотра. Я пробовал различные комбинации ниже, но все они, кажется, в конечном счете заканчиваются RequestNavigate
неисправного молча во второй раз, когда я пытаюсь перейти к ViewB ...MEF, Призма и новый экземпляр представления при навигации
Я также попытался установить IsNaviagtionTarget
ложь после того, как был навигация один раз.
Загрузчик:
public void Initialize()
{
_regionManager.RegisterViewWithRegion(RegionNameConstants.MainRegion, typeof(ViewA));
_regionManager.RegisterViewWithRegion(RegionNameConstants.MainRegion, typeof(ViewB));
}
ViewB (класс):
[RegionMemberLifetime(KeepAlive = false)]
[Export]
[PartCreationPolicy(CreationPolicy.NonShared)]
internal partial class ViewB
{
[ImportingConstructor]
public ViewB(ViewBViewModel viewModel)
{
InitializeComponent();
DataContext = viewModel;
}
}
ViewBViewModel:
[Export(typeof(ViewBViewModel))]
[PartCreationPolicy(CreationPolicy.NonShared)]
internal class ViewBViewModel : BindableBase, INavigationAware
{
public void OnNavigatedTo(NavigationContext navigationContext)
{
}
public bool IsNavigationTarget(NavigationContext navigationContext)
{
return true;
}
public void OnNavigatedFrom(NavigationContext navigationContext)
{
}
}
ViewA просто имеет кнопку с командой, которая вызывает:
ViewA Навигация Команда:
public override void Execute(object parameter)
{
_regionManager.RequestNavigate(RegionNameConstants.MainRegion, new Uri(nameof(ViewB), UriKind.Relative));
}
Магия была в nameof (ViewB), который работал без дополнительного регистра я использовал в своем ответе , Хороший звонок. – JonWells