使用Prism,MVVM,Unity查看切换导航

时间:2012-05-11 20:59:38

标签: c# mvvm navigation prism unity-container

container.RegisterType<object, LabStatusView>("LabStatusView");
Uri LabStatusViewUri = new Uri("pack://application:,,,/LabStatus;component/LabStatusView.xaml",     
UriKind.Absolute);
regionManager.RequestNavigate("HorizonNavigatorView",LabStatusViewUri,NavigationCompleted);

我使用它来导航到LabStatusView,这看起来很简单。

执行requestNavigate后的ObjectStates:

  1. regionManager.Regions.ActiveRegion包含一个“Object”类型的对象,而不是LabStatusView。
  2. 我所知道的唯一使用Unity的怪癖是我使用RegiterType方法的重载来注册我的类型。
  3. 有什么建议我在这里做错了吗?

1 个答案:

答案 0 :(得分:3)

导航比您的代码更容易。以下是我为一个项目做的事情。

//Register your View on Startup
container.RegisterType<object, LabStatusView>("LabStatusView");

//Navigation works like this
var labStatusView = new Uri("LabStatusView", UriKind.Relative);
regionManager.RequestNavigate("HorizonNavigatorView", labStatusView);

你能这样试试吗?

许多人也使用静态类作为Region和View名称来避免“魔术字符串”。 这样的事情。

public class RegionNames
{
  public const string HorizonNavigatorView = "HorizonNavigatorView";
}
public class ViewNames
{
  public const string LabStatusView = "LabStatusView";
}