私はプリズムを学ぼうとしていましたが、私は非常に基本的な例を得ることができません。私は単一の領域を持つシェルを持っています。私はモジュールからシェルの領域にビューをロードしようとしていますが、シェルは空のウィンドウを表示しています。私は、ビューがシェルの領域に読み込まれない理由を理解できません。ここにコードファイルがあります。プリズム - シェル内にusercontrolの内容をロードしていない
ブートストラップ:
public class Bootstrapper : MefBootstrapper {
protected override DependencyObject CreateShell() {
Window shell = new MainWindow();
Application.Current.MainWindow = shell;
return shell;
}
protected override IModuleCatalog CreateModuleCatalog() {
return new ConfigurationModuleCatalog();
}
}
シェル:
<Window x:Class="MVVMPractice.MainWindow">
<StackPanel x:Name="LayoutRoot" Background="White">
<ContentControl prism:RegionManager.RegionName="MainRegion" />
</StackPanel>
</Window>
モジュール:地域に負荷に
[ModuleExport(typeof(CoreModule))]
public class CoreModule : IModule {
[Import]
public IRegionManager RegionManager { get; set; }
public void Initialize() {
var view = new WelcomeView();
RegionManager.AddToRegion("MainRegion", view);
}
}
ビュー:
<UserControl x:Class="MVVMPractice.Modules.Core.WelcomeView">
<Grid Background="Red">
<TextBlock Text="Hello Prism!" FontSize="20" />
</Grid>
</UserControl>
上記のビューはシェルに表示されますが、表示されません。シェルの地域が上記の見解を示さない理由は何ですか?
EDIT: モジュールは、次のようにApp.configファイルで構成されます。
App.configを
<configuration>
<configSections>
<section name="modules" type="Microsoft.Practices.Prism.Modularity.ModulesConfigurationSection,
Microsoft.Practices.Prism"/>
</configSections>
<modules>
<module assemblyFile="MVVMPractice.Modules.Core.dll"
moduleType="MVVMPractice.Modules.Core.CoreModule, MVVMPractice.Modules.Core.CoreModule,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
moduleName="CoreModule"
startupLoaded="true" />
</modules>
</configuration>
リージョンにビューを追加するのではなく、 'RegionManager.RegisterViewWithRegion(" MainRegion "、view)'を呼び出さないのはなぜですか。それはそれを地域に加えて表示していないように思えます。 –
私はあなたの提案を試みましたが、まだ空白のウィンドウが表示されます。ビューはどうにかして "MainRegion"に終わらない。 – Jatin
それはうまくいくはずです。これをチェックするには、コード内のRegionManager.Regions ["MainRegion"]を呼び出すか、デバッグしてlocalwindowで使用します。 ElseあなたがロードしているContentControlとユーザコントロールの両方に幅と高さを設定してみてください。 –