Prismフレームワークで作成したプロジェクトのMainメソッドの書き換えを行おうと思ったら少し手間取ったので備忘録として残しておきます。
Mainメソッドの書き換えについて
こちらのサイトが参考になりますのでご覧になってください。
http://www.atmarkit.co.jp/ait/articles/1511/04/news027.html
App.xaml.csについて
プロジェクトを作成すると、以下のコードが初期状態で書かれています。
// usingは省略
public partial class App
{
protected override Window CreateShell()
{
return Container.Resolve<MainWindow>();
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
}
}
ここにMainメソッドを加えても、画面が表示されずうまく動きません。
// usingは省略
public partial class App
{
[STAThread]
public static void Main()
{
// 何か処理
}
protected override Window CreateShell()
{
return Container.Resolve<MainWindow>();
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
}
}
対応方法
まずクラスファイルを追加します。ここではShell.cs
というファイルを追加します。そして、以下のようなコードを書きます。
// usingは省略
class Shell : PrismApplication
{
protected override Window CreateShell()
{
return Container.Resolve<MainWindow>();
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
}
}
次に、App.xaml.cs
を以下のように修正します。CreateShell()、RegisterTypes()は削除してください。
// usingは省略
public partial class App
{
[STAThread]
public static void Main()
{
// 何か処理
Shell shell = new Shell();
shell.Run();
}
}
最後に、App.xaml
の先頭タグがprism:PrismApplication
となっていると思います。これをApplication
に変更します。
<Application x:Class="Main.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:prism="http://prismlibrary.com/"
xmlns:local="clr-namespace:Main">
<Application.Resources>
</Application.Resources>
</Application>
これで、Mainメソッドを書き換えつつPrismの使用が可能となりました。