2011-08-02 10 views
1

返しますが、私はすでにあなたがオブジェクトとしてユニティでビューを登録しなければならないことを学んだ:私はWPF /プリズム:ビューは、私はWPFとプリズムに新しいですSystem.Objectの

を使用する場合、まだ

Container.RegisterType<Object,MyView>("My.Assembly.MyView"); 

var RelativeUriToMyView = new Uri("My.Assembly.MyView",UriKind.Relative);  
RegionManager.RequestNavigate(RelativeUriToMyView, RegionName, CallbackResult); 

MyViewはSystem.Objectとして表示され、CallbackResultにはエラーはありません。

私には何が欠けていますか?必要に応じてより多くの情報を提供しています。

答えて

1

この問題は、名前(MyView)の代わりにFullName(My.Assembly.MyView)でビューを登録することによって発生したようです。

編集: 問題をより正確に反映するように変更されました。

2

PRISMソースコードでRegionNavigationContentLoader.csを調べるとよいでしょう。あなたのためにビューを読み込んでいるコードはここにあります。 URIを取り、いくつかのヘルパーメソッドがあります

protected virtual object CreateNewRegionItem(string candidateTargetContract) 
    { 
     object newRegionItem; 

     try 
     { 
      newRegionItem = this.serviceLocator.GetInstance<object>(candidateTargetContract); 
     } 
     catch (ActivationException e) 
     { 
      throw new InvalidOperationException(
       string.Format(CultureInfo.CurrentCulture, Resources.CannotCreateNavigationTarget, candidateTargetContract), 
       e); 
     } 
     return newRegionItem; 
    } 

は、クエリ文字列を抽出して、あなたのビューを検索し、それをオブジェクトとしてキャストするために使用さ「名前」を作成します。

具体的なクラスをオブジェクトとしてUnityに関連付けるために使用している名前は、基本的に、Unityでオブジェクトを解決しようとするときに使用する必要があります。ここでは、こののどれも私が内容を見ることができるようにRelativeUriToMyViewを投稿し、助けていない場合は、

Container.RegisterType<object, ConcreteClass>(typeof(ConcreteClass).FullName); 

Locator.GetInstance<object>(UriWithFullName) 

を説明するためのいくつかのpesudocodeです。 幸運。

+0

リクエストした内容を表示するための質問が更新されました。 – grefly

+0

モジュールを使用していますか?死んだ荷物? – Rick

+0

モジュールを使用していますが、シェルビューで問題が発生しました。私は '.FullName'ではなく' .Name'で登録することで問題を解決できました。 – grefly

関連する問題