2

シェルで定義されたネストされた領域を持つメニュー (Telerik RadMenu) があります。私のモジュールでは、モジュール メニューまたはツールバー項目をこれらの領域に登録します。ルート リージョンではすべて正常に動作しますが、メニューのファイル リージョンなどの子リージョンに何かを追加しようとすると、「例外メッセージ: リージョン マネージャーに FileMenuRegion リージョンが含まれていません」というエラーが表示されます。

ただし、このコードを変更すると、言ったように

regionManager.Regions[RegionNames.FileMenuRegion].Add(menuItem);

これに

regionManager.Regions[RegionNames.MainMenuRegion].Add(menuItem);

すべて正常に動作します。以下は私のメニューの XAML で、リージョン名とその構成方法を確認できます。これは当惑し、私を夢中にさせているので、どんな助けも大歓迎です。

メニュー

    <telerikNavigation:RadMenu x:Name="menuMain" DockPanel.Dock="Top" prismrgn:RegionManager.RegionName="{x:Static i:RegionNames.MainMenuRegion}" telerik:StyleManager.Theme="{Binding Source={StaticResource settings}, Path=Default.CurrentTheme}">
            <telerikNavigation:RadMenuItem Header="{x:Static p:Resources.File}" prismrgn:RegionManager.RegionName="{x:Static i:RegionNames.FileMenuRegion}">
                <telerikNavigation:RadMenuItem Header="{x:Static p:Resources.Exit}" Command="{Binding ExitCommand}">
                    <telerikNavigation:RadMenuItem.Icon>
                        <Image Source="../Resources/Close.png" Stretch="None" />
                    </telerikNavigation:RadMenuItem.Icon>
                </telerikNavigation:RadMenuItem>
            </telerikNavigation:RadMenuItem>
        </telerikNavigation:RadMenu>
4

1 に答える 1

1

上記のXAMLは、PRISMリージョンの設計に反します。

すべてのリージョンは、ContentControlから派生したコントロールにアタッチされることになっています。リージョンに登録されたビューをロードするプロセスは、リージョンコンテナのコンテンツを、そのリージョン名に登録されている一致するビューに置き換えます。これにより、ネストされたリージョン名が削除されるため、表示されるエラーは正しいものになります。

指定されたリージョン名に登録されたビュー自体に他のリージョンを含めることができるという考え方です。

于 2010-08-27T22:08:10.710 に答える