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 の代わりに「オブジェクト」タイプのオブジェクトが 1 つ含まれています。
  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 に答える