Using_Prism.Unity_with_WPF
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[Using_Prism.Unity_with_WPF]]
#contents
PrismとUnityを使うWPFプロジェクトテンプレートを使ってみる
C#WPFXamlMVVMPRISM
7
* PrismとUnityを使うWPFプロジェクトテンプレートを使ってみ...
Visual Studioの拡張機能の「Prism Template Pack」
Prism Template Packには、WPFを構築するためのスニペット、...
注:Xamarin.Formsテンプレートをインストールするには、最...
とのこと。
まずは、ダウンロード•VisualStudioを起動
•ツール > 拡張機能と更新プログラム を選択
•オンラインタブ > 検索条件に「Prism Template Pack」を入力
•検索が表示されたら「Prism Template Pack」をダウンロード
•VisualStudioを再起動するとインストールが始まります。
※2017/04/14に1.10が公開されています。VisualStudio2017にも...
WS000009.JPG
何ができる?
スニペット:
•propp - BindableBaseに依存するバッキングフィールドを持...
•cmd - プライベートセッターでDelegateCommandプロパティ
•cmdg - 汎用のDelegateCommand プロパティ ※パラメータ有...
スニペットの例:
↓これを入力
propp
タブキー2打後
private string fieldName;
public string PropertyName
{
get { return fieldName; }
set { SetProperty(ref fieldName, value); }
}
アイテムテンプレート:
•Prism ViewModel - BindableBaseから派生し、デフォルトコ...
•Prism UserControl - ViewModelLocatorを使用したUserControl
•Prism Window - ViewModelLocatorを使ったWindow
プロジェクトテンプレート:
•Prism Module - WPF Prismアプリケーションにモジュールを...
•Prism Autofac App - PrismとAutofacでWPFアプリケーション...
•Prism Ninject App - PrismとNinjectを使用してWPFアプリケ...
•Prism StructureMap App - PrismとStructureMapを使用してW...
•Prism Unity App - PrismとUnityを使ってWPFアプリケーショ...
xamarinも対応していますが、ここでは説明省略。
今回は、Prism Unity Appを使用します。
プロジェクトの作成
•新しいプロジェクト > テンプレート > Prism > WPF > Prism...
•プロジェクト名を入力
PrismUnityApp.jpg
こんな感じで、ディレクトリ構成やBootstrapperクラスも作っ...
モジュールの追加•ソリューションを右クリック > 新しい項目 ...
WS000013.JPG
Prismモジュールを追加をするとこんな感じに
PrismUnityApp2.jpg
ちょっと作成
** 1.プロジェクトテンプレートでPrism Moduleを追加 [#p4da3...
•上の方で説明しましたがモジュールもプロジェクトテンプレ...
•なので、ここでは、一旦ソリューションをリビルドします。
** 2.作成したPrism ModuleをWindowの方のプロジェクトで参照...
- 参照を右クリックして > 参照の追加 > プロジェクトタブを...
WS000701.JPG
** 3.Bootstrapperクラス [#x747f16b]
•プロジェクトテンプレートでBootstrapper.csは、作成されて...
• ConfigureModuleCatalogで外部モジュールから呼び出すため...
Bootstrapper.cs
using Microsoft.Practices.Unity;
using Prism.Modularity;
using Prism.Unity;
using PrismUnityApp1.Views;
using System.Windows;
namespace PrismUnityApp1
{
class Bootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
return Container.Resolve<MainWindow>();
}
protected override void InitializeShell()
{
Application.Current.MainWindow.Show();
}
protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog();
ModuleCatalog moduleCatalog = (ModuleCatalog...
moduleCatalog.AddModule(typeof(PrismModule1....
}
}
}
** 4.メインページの作成 [#n910bd40]
•Prismモジュールで作成したプロジェクトのViewsフォルダにU...
WS000702.JPG
•今回は、「MainView」としています。
MainView.xaml
<UserControl x:Class="PrismModule1.Views.MainView"
xmlns="http://schemas.microsoft.com/winfx/2...
xmlns:x="http://schemas.microsoft.com/winfx...
xmlns:mc="http://schemas.openxmlformats.org...
xmlns:d="http://schemas.microsoft.com/expre...
xmlns:local="clr-namespace:PrismModule1.Vie...
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Background="Gray">
<TextBlock VerticalAlignment="Stretch" Horiz...
</Grid>
<Grid Grid.Row="1" >
<DataGrid VerticalAlignment="Stretch" Horizo...
</Grid>
</Grid>
</UserControl>
** 5.領域の作成 [#wa7565f0]
•PrismModule1Module.csを開いて領域の作成を行います。
•ここでもPrism Moduleのプロジェクトテンプレートで作成し...
PrismModule1Module.cs
using Prism.Modularity;
using Prism.Regions;
using System;
namespace PrismModule1
{
public class PrismModule1Module : IModule
{
IRegionManager _regionManager;
public PrismModule1Module(IRegionManager regionM...
{
_regionManager = regionManager;
}
public void Initialize()
{
//throw new NotImplementedException();
_regionManager.RegisterViewWithRegion("Conte...
}
}
}
** 6.リビルドして、実行 [#af402018]
•はい、これでMainViewがMainWindow内に表示されることが確...
•WS000704.JPG
* まとめ [#yb154ea2]
プロジェクトテンプレートでちょこっとだけ手間が省けました。
とはいっても、いろいろと追記していかないといけないのです...
とかのめんどくささからは、少しだけ解放といったところでし...
普段社内でWPFアプリケーションは、MEFを使っていて、Unityっ...
ちなみに古い記事ですがこんなのがありました。
リンク:Unity vs. MEF
この記事は以下の記事からリンクされています
[WPF][XAML]MahApps.Metroのタイルコントロールを使ったメニ...
[WPF][XAML]InkCanvasを使ってみるからリンク8ヶ月前
[WPF][XAML]VB-ReportのWPF 用ビューアコントロールを使って...
[WPF][XAML]InkCanvasにTextBoxを追加してみるからリンク3ヶ...
* Reference [#t417a9f3]
[[PrismとUnityを使うWPFプロジェクトテンプレートを使ってみ...
終了行:
[[Using_Prism.Unity_with_WPF]]
#contents
PrismとUnityを使うWPFプロジェクトテンプレートを使ってみる
C#WPFXamlMVVMPRISM
7
* PrismとUnityを使うWPFプロジェクトテンプレートを使ってみ...
Visual Studioの拡張機能の「Prism Template Pack」
Prism Template Packには、WPFを構築するためのスニペット、...
注:Xamarin.Formsテンプレートをインストールするには、最...
とのこと。
まずは、ダウンロード•VisualStudioを起動
•ツール > 拡張機能と更新プログラム を選択
•オンラインタブ > 検索条件に「Prism Template Pack」を入力
•検索が表示されたら「Prism Template Pack」をダウンロード
•VisualStudioを再起動するとインストールが始まります。
※2017/04/14に1.10が公開されています。VisualStudio2017にも...
WS000009.JPG
何ができる?
スニペット:
•propp - BindableBaseに依存するバッキングフィールドを持...
•cmd - プライベートセッターでDelegateCommandプロパティ
•cmdg - 汎用のDelegateCommand プロパティ ※パラメータ有...
スニペットの例:
↓これを入力
propp
タブキー2打後
private string fieldName;
public string PropertyName
{
get { return fieldName; }
set { SetProperty(ref fieldName, value); }
}
アイテムテンプレート:
•Prism ViewModel - BindableBaseから派生し、デフォルトコ...
•Prism UserControl - ViewModelLocatorを使用したUserControl
•Prism Window - ViewModelLocatorを使ったWindow
プロジェクトテンプレート:
•Prism Module - WPF Prismアプリケーションにモジュールを...
•Prism Autofac App - PrismとAutofacでWPFアプリケーション...
•Prism Ninject App - PrismとNinjectを使用してWPFアプリケ...
•Prism StructureMap App - PrismとStructureMapを使用してW...
•Prism Unity App - PrismとUnityを使ってWPFアプリケーショ...
xamarinも対応していますが、ここでは説明省略。
今回は、Prism Unity Appを使用します。
プロジェクトの作成
•新しいプロジェクト > テンプレート > Prism > WPF > Prism...
•プロジェクト名を入力
PrismUnityApp.jpg
こんな感じで、ディレクトリ構成やBootstrapperクラスも作っ...
モジュールの追加•ソリューションを右クリック > 新しい項目 ...
WS000013.JPG
Prismモジュールを追加をするとこんな感じに
PrismUnityApp2.jpg
ちょっと作成
** 1.プロジェクトテンプレートでPrism Moduleを追加 [#p4da3...
•上の方で説明しましたがモジュールもプロジェクトテンプレ...
•なので、ここでは、一旦ソリューションをリビルドします。
** 2.作成したPrism ModuleをWindowの方のプロジェクトで参照...
- 参照を右クリックして > 参照の追加 > プロジェクトタブを...
WS000701.JPG
** 3.Bootstrapperクラス [#x747f16b]
•プロジェクトテンプレートでBootstrapper.csは、作成されて...
• ConfigureModuleCatalogで外部モジュールから呼び出すため...
Bootstrapper.cs
using Microsoft.Practices.Unity;
using Prism.Modularity;
using Prism.Unity;
using PrismUnityApp1.Views;
using System.Windows;
namespace PrismUnityApp1
{
class Bootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
return Container.Resolve<MainWindow>();
}
protected override void InitializeShell()
{
Application.Current.MainWindow.Show();
}
protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog();
ModuleCatalog moduleCatalog = (ModuleCatalog...
moduleCatalog.AddModule(typeof(PrismModule1....
}
}
}
** 4.メインページの作成 [#n910bd40]
•Prismモジュールで作成したプロジェクトのViewsフォルダにU...
WS000702.JPG
•今回は、「MainView」としています。
MainView.xaml
<UserControl x:Class="PrismModule1.Views.MainView"
xmlns="http://schemas.microsoft.com/winfx/2...
xmlns:x="http://schemas.microsoft.com/winfx...
xmlns:mc="http://schemas.openxmlformats.org...
xmlns:d="http://schemas.microsoft.com/expre...
xmlns:local="clr-namespace:PrismModule1.Vie...
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Background="Gray">
<TextBlock VerticalAlignment="Stretch" Horiz...
</Grid>
<Grid Grid.Row="1" >
<DataGrid VerticalAlignment="Stretch" Horizo...
</Grid>
</Grid>
</UserControl>
** 5.領域の作成 [#wa7565f0]
•PrismModule1Module.csを開いて領域の作成を行います。
•ここでもPrism Moduleのプロジェクトテンプレートで作成し...
PrismModule1Module.cs
using Prism.Modularity;
using Prism.Regions;
using System;
namespace PrismModule1
{
public class PrismModule1Module : IModule
{
IRegionManager _regionManager;
public PrismModule1Module(IRegionManager regionM...
{
_regionManager = regionManager;
}
public void Initialize()
{
//throw new NotImplementedException();
_regionManager.RegisterViewWithRegion("Conte...
}
}
}
** 6.リビルドして、実行 [#af402018]
•はい、これでMainViewがMainWindow内に表示されることが確...
•WS000704.JPG
* まとめ [#yb154ea2]
プロジェクトテンプレートでちょこっとだけ手間が省けました。
とはいっても、いろいろと追記していかないといけないのです...
とかのめんどくささからは、少しだけ解放といったところでし...
普段社内でWPFアプリケーションは、MEFを使っていて、Unityっ...
ちなみに古い記事ですがこんなのがありました。
リンク:Unity vs. MEF
この記事は以下の記事からリンクされています
[WPF][XAML]MahApps.Metroのタイルコントロールを使ったメニ...
[WPF][XAML]InkCanvasを使ってみるからリンク8ヶ月前
[WPF][XAML]VB-ReportのWPF 用ビューアコントロールを使って...
[WPF][XAML]InkCanvasにTextBoxを追加してみるからリンク3ヶ...
* Reference [#t417a9f3]
[[PrismとUnityを使うWPFプロジェクトテンプレートを使ってみ...
ページ名: