3
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 包含一个“对象”类型的对象,而不是 LabStatusView。
  2. 我知道使用 Unity 的唯一怪癖是我使用 RegiterType 方法的重载注册了我的类型。

有什么建议我在这里做错了吗?

4

1 回答 1

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);

你可以这样试试吗?

许多人也使用静态类作为他们的区域和视图名称以避免“魔术字符串”。像这样的东西。

public class RegionNames
{
  public const string HorizonNavigatorView = "HorizonNavigatorView";
}
public class ViewNames
{
  public const string LabStatusView = "LabStatusView";
}
于 2012-05-12T11:32:25.273 回答