2011-08-06 37 views
1

以下のシナリオについて、2つの質問があります。なぜ、地域が最初に地域コレクションに追加されなかったのですか?地域に表示されないビューが表示される

なぜリージョンが表示されないのですか?またはトラブルシューティングを行うにはどうすればよいですか?

ここが問題です.Prism for WPFでは、ポップアップのように動作するウィンドウがあります。このウィンドウには、region属性を使用するユーザーコントロールがあります。何らかの理由で、このウィンドウのリージョンがリージョンコレクションに表示されませんでした。

領域のコレクションにウィンドウの領域を取得するには、コードで行いました。このウィンドウの外観をトリガーモジュールでは、私はない:

IRegion region = new SingleActiveRegion(); 
myRegionManager.Regions.Add("MainWindowRegion", region); 
myContainer.Resolve<someViewModel>().Initialize(); 
SomeView someView = myContainer.Resolve<SomeView>(); 
SomeViewModel someViewModel = myContainer.Resolve<SomeViewModel>(); 
someView.DataContext = someViewModel; 
myRegionManager.Regions["MainWindowRegion"].add(someView, "SomeView"); 

地域は今、私の他の地域の全てとともに、地域のコレクションに表示されます。ただし、一部のビューはリージョンに表示されません。

答えて

0

最初に:

ここで、ビューとビューモデルをUnityに追加していますか?モジュールの初期化の一環としてこれを行う必要があります。各プリズムモジュールは、IModuleを実装する単一のクラスを持つ必要があります。あなたはこれをやったと仮定すると、

は上記のコードを読んで、私が作成されている地域を見ていますが、この領域に結合されようとしている制御用のXAMLを追加していませんでした。

例えば、私は、シェルで次のように表示することを期待したい:

<UserControl> 
<Grid> 
<ItemsControl Margin="0,20,0,0" cal:RegionManager.RegionName="MainWindowRegion" /> 
</Grid> 
</UserControl> 

これはMainWindowRegionを作成し、ページ上のItemsControlにバインドします。このユーザーコントロールがロードされると、領域はPrismで登録され、デフォルトのRegionManagerに追加されます。

リージョンを手動で作成する必要がある場合は、コントロールにバインドされていない可能性があります。リージョンをビューに追加すると、リージョンはコントロールにバインドされていないため表示されません。

はそのコンストラクタでSomeViewModelパラメータを取り、その後、そこDataContextにバインドSomeView持っている:view/viewmodel解像度で見る

、もっと簡単な方法があります。 Unityは、SomeViewに依存関係があり、それを自動的に解決することがわかります...

関連する問題