5

Prism Region からビューをアンロードするにはどうすればよいですか?

シェルでリボン コントロールを使用して WPF Prism アプリを作成しています。リボンの [ホーム] タブにはRibbonHomeTabRegion、モジュールの 1 つ ( ModuleAと呼びます) がRibbonGroup. それはうまくいきます。

ユーザーが ModuleA から移動する場合、RibbonGroupを からアンロードする必要がありますRibbonHomeTabRegion。を別のビューに置き換えているわけではありませんRibbonGroup。領域は空でなければなりません。

編集:質問のこの部分を書き直しました:

ビューを削除しようとすると、「リージョンに指定されたビューが含まれていません」というエラー メッセージが表示されます。そこで、リージョン内のビューを削除する次のコードを作成しました。

// Get the regions views
var regionManager = ServiceLocator.Current.GetInstance<IRegionManager>();
var ribbonHomeTabRegion = regionManager.Regions["RibbonHomeTabRegion"];
var views = ribbonHomeTabRegion.Views;

// Unload the views
foreach (var view in views)
{
    ribbonHomeTabRegion.Remove(view);
}

私はまだ同じエラーが発生しています。これは、私が間違っている非常に基本的なことがあるということです。

誰かが私を正しい方向に向けることができますか? ご協力いただきありがとうございます。

4

3 に答える 3

4

完全に理解しているとは言えませんが、答えを見つけました。IRegionManager.RequestNavigate() を使用して、次のように、RibbonGroup をリボンの [ホーム] タブに挿入しました。

// Load RibbonGroup into Navigator pane
var noteListNavigator = new Uri("NoteListRibbonGroup", UriKind.Relative);
regionManager.RequestNavigate("RibbonHomeTabRegion", noteListNavigator);

次のように、リージョンに登録してビューを挿入するようにコードを変更しました。

// Load Ribbon Group into Home tab
regionManager.RegisterViewWithRegion("RibbonHomeTabRegion", typeof(NoteListRibbonGroup));

これで、次のコードを使用して RibbonGroup を削除できます。

if(ribbonHomeTabRegion.Views.Contains(this))
{
    ribbonHomeTabRegion.Remove(this);
}

したがって、ビューをどのように注入するかは明らかに重要です。ビューを削除できるようにしたい場合は、Region Manager に登録して注入します

于 2011-04-04T19:47:19.617 に答える
0

ビューを追加する前に、ビューを別のビュー内にラップしている RegionAdapter がある可能性はありますか? ビューのribbonHomeTabRegionコレクションを持つプロパティが必要です - その中に何かありますか?

于 2011-04-04T02:37:49.147 に答える