Using_Prism.Unity_with_WPF
の編集
https://erion1107-pukiwiki.erion1107.net/?Using_Prism.Unity_with_WPF
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
kiji-template
2018年度学習計画メモ
20180217-01-オフラインインストール発表用メモ
Ansible構成例
AWS認定ソリューションアーキテクト・アソシエーション認定テスト対策
bashコーディング規約
BracketName
CentOS7で自宅サーバー作成勉強用リスト
CentOS 7とSamba4で自宅用Active Directory Domain Controller (AD DC)を構築する① インストール編
CloudflareとLet’s EncryptでWebサイトをHTTPS化
COBOLプログラミング入門
conoHaAPIまとめ
Docker-Command一覧
DockerCommandCheatSheet
Docker_Cmd_List
ERION1107-mywiki
erion1107-mywiki
ERION1107自分用のwiki
ESXiインストールについて
FontPage
FormattingRules
FPGAのアーキテクチャとソフトエラー起因の可用性低下
FrontPage
F#EntryForWeb
F#入門
Help
IaC for Ansible with Windows OS
Install_Redmine3.4_with_CentOS7.3
InterWiki
InterWikiName
InterWikiSandBox
Java-Struts2導入について
JavaSwingコンポーネント
Java入門
Java入門2
Linux 標準教科書に出てくるコマンドリスト
matplotlib-円グラフの作成メモ
MBSAについて
MenuBar
Non-BlockingIOを使ってみよう-Java編
PHP
PowerShell入門
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
pukiwiki記法の書き方入門
python-code-memo
re-view入門
RecentDeleted
SandBox
SoftEther VPN for Linuxについて
SoftEtherVPNについて
Spring解体新書メモ
SQL_Entry
StudyCentOSForWebSiteBuild
Tips作業メモ
UML
UNIXコマンド
Using_Prism.Unity_with_WPF
Vagrant入門
VivlioStyleで行こう!
VPNのススメ
WikiEngines
WikiName
WikiWikiWeb
WindowsPhone開発のためのPrism+ReactiveProperty基本
WindowsとLinuxのオフラインインストールについて調べてみた
WindowsとLinuxのオフラインインストールについて調べてみた 2
wireshark
WSL(Windows Subsystem for Linux)の基本Memo
yaml-sample
YAMLを覚えよう
YukiWiki
ZABBIX
■Redmine On Docker
お仕事用メモ
はじめてのアプリ発注
アプリ開発後に行う動作テストについて
カタン戦術論
デザインパターン23種
プレゼン発表のコツ
レンタルサーバーに独自SSL「Let's Encrypt」導入(Windows10編)
個人アプリ開発のメモ
勉強会発表用メモ
自分用のpukiwiki
記憶術メモ
[[Using_Prism.Unity_with_WPF]] #contents PrismとUnityを使うWPFプロジェクトテンプレートを使ってみる C#WPFXamlMVVMPRISM 7 * PrismとUnityを使うWPFプロジェクトテンプレートを使ってみる [#s2f8f36b] Visual Studioの拡張機能の「Prism Template Pack」 Prism Template Packには、WPFを構築するためのスニペット、アイテムテンプレート、およびプロジェクトテンプレートのコレクションと、Prismを使用するXamarin.Formsアプリケーションが含まれています。 注:Xamarin.Formsテンプレートをインストールするには、最新バージョンのXamarinが必要です。 とのこと。 まずは、ダウンロード•VisualStudioを起動 •ツール > 拡張機能と更新プログラム を選択 •オンラインタブ > 検索条件に「Prism Template Pack」を入力 •検索が表示されたら「Prism Template Pack」をダウンロード •VisualStudioを再起動するとインストールが始まります。 ※2017/04/14に1.10が公開されています。VisualStudio2017にも対応している模様 WS000009.JPG 何ができる? スニペット: •propp - BindableBaseに依存するバッキングフィールドを持つプロパティ ※通知を伝播させる時に使用 •cmd - プライベートセッターでDelegateCommandプロパティ •cmdg - 汎用のDelegateCommand プロパティ ※パラメータ有りのDelegateCommandの場合に使用 スニペットの例: ↓これを入力 propp タブキー2打後 private string fieldName; public string PropertyName { get { return fieldName; } set { SetProperty(ref fieldName, value); } } アイテムテンプレート: •Prism ViewModel - BindableBaseから派生し、デフォルトコンストラクタを持つViewModel •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を使用してWPFアプリケーションを構築するためのプロジェクトテンプレート •Prism Unity App - PrismとUnityを使ってWPFアプリケーションを構築するためのプロジェクトテンプレート xamarinも対応していますが、ここでは説明省略。 今回は、Prism Unity Appを使用します。 プロジェクトの作成 •新しいプロジェクト > テンプレート > Prism > WPF > Prism Unity App(WPF)を選択。 •プロジェクト名を入力 PrismUnityApp.jpg こんな感じで、ディレクトリ構成やBootstrapperクラスも作ってくれます。 モジュールの追加•ソリューションを右クリック > 新しい項目 > Prism Module(WPF)を選択 WS000013.JPG Prismモジュールを追加をするとこんな感じに PrismUnityApp2.jpg ちょっと作成 ** 1.プロジェクトテンプレートでPrism Moduleを追加 [#p4da307b] •上の方で説明しましたがモジュールもプロジェクトテンプレートがあるので、そちらから追加をしておけば、Viewsフォルダなんかも作られています。 •なので、ここでは、一旦ソリューションをリビルドします。 ** 2.作成したPrism ModuleをWindowの方のプロジェクトで参照 [#vca73888] - 参照を右クリックして > 参照の追加 > プロジェクトタブを選択 > 追加したPrism Moduleのプロジェクトにチェックを入れる > OKを押下します。 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)this.ModuleCatalog; moduleCatalog.AddModule(typeof(PrismModule1.PrismModule1Module)); } } } ** 4.メインページの作成 [#n910bd40] •Prismモジュールで作成したプロジェクトのViewsフォルダにUserControlを作成します。 WS000702.JPG •今回は、「MainView」としています。 MainView.xaml <UserControl x:Class="PrismModule1.Views.MainView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:PrismModule1.Views" 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" HorizontalAlignment="Stretch" Text="「Prism Template Pack」サンプル" FontSize="20" Foreground="White" Margin="10"/> </Grid> <Grid Grid.Row="1" > <DataGrid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="10"></DataGrid> </Grid> </Grid> </UserControl> ** 5.領域の作成 [#wa7565f0] •PrismModule1Module.csを開いて領域の作成を行います。 •ここでもPrism Moduleのプロジェクトテンプレートで作成した場合は、ある程度作成されているので、Initializeメソッドを修正します。 PrismModule1Module.cs using Prism.Modularity; using Prism.Regions; using System; namespace PrismModule1 { public class PrismModule1Module : IModule { IRegionManager _regionManager; public PrismModule1Module(IRegionManager regionManager) { _regionManager = regionManager; } public void Initialize() { //throw new NotImplementedException(); _regionManager.RegisterViewWithRegion("ContentRegion", typeof(Views.MainView)); } } } ** 6.リビルドして、実行 [#af402018] •はい、これでMainViewがMainWindow内に表示されることが確認できました。 •WS000704.JPG * まとめ [#yb154ea2] プロジェクトテンプレートでちょこっとだけ手間が省けました。 とはいっても、いろいろと追記していかないといけないのですが、まず最初のディレクトリ構成を整えて、StartUp消して、Bootstrapperクラスを作成して・・・ とかのめんどくささからは、少しだけ解放といったところでしょうか? 普段社内でWPFアプリケーションは、MEFを使っていて、Unityって触れたことがないので、今後は、これを使って何かやってみます。 ちなみに古い記事ですがこんなのがありました。 リンク:Unity vs. MEF この記事は以下の記事からリンクされています [WPF][XAML]MahApps.Metroのタイルコントロールを使ったメニュー画面を作ってみるからリンク10ヶ月前 [WPF][XAML]InkCanvasを使ってみるからリンク8ヶ月前 [WPF][XAML]VB-ReportのWPF 用ビューアコントロールを使ってみるからリンク7ヶ月前 [WPF][XAML]InkCanvasにTextBoxを追加してみるからリンク3ヶ月前 * Reference [#t417a9f3] [[PrismとUnityを使うWPFプロジェクトテンプレートを使ってみる:https://qiita.com/HAGITAKO/items/adedbb6c70d2763543f2]]
タイムスタンプを変更しない
[[Using_Prism.Unity_with_WPF]] #contents PrismとUnityを使うWPFプロジェクトテンプレートを使ってみる C#WPFXamlMVVMPRISM 7 * PrismとUnityを使うWPFプロジェクトテンプレートを使ってみる [#s2f8f36b] Visual Studioの拡張機能の「Prism Template Pack」 Prism Template Packには、WPFを構築するためのスニペット、アイテムテンプレート、およびプロジェクトテンプレートのコレクションと、Prismを使用するXamarin.Formsアプリケーションが含まれています。 注:Xamarin.Formsテンプレートをインストールするには、最新バージョンのXamarinが必要です。 とのこと。 まずは、ダウンロード•VisualStudioを起動 •ツール > 拡張機能と更新プログラム を選択 •オンラインタブ > 検索条件に「Prism Template Pack」を入力 •検索が表示されたら「Prism Template Pack」をダウンロード •VisualStudioを再起動するとインストールが始まります。 ※2017/04/14に1.10が公開されています。VisualStudio2017にも対応している模様 WS000009.JPG 何ができる? スニペット: •propp - BindableBaseに依存するバッキングフィールドを持つプロパティ ※通知を伝播させる時に使用 •cmd - プライベートセッターでDelegateCommandプロパティ •cmdg - 汎用のDelegateCommand プロパティ ※パラメータ有りのDelegateCommandの場合に使用 スニペットの例: ↓これを入力 propp タブキー2打後 private string fieldName; public string PropertyName { get { return fieldName; } set { SetProperty(ref fieldName, value); } } アイテムテンプレート: •Prism ViewModel - BindableBaseから派生し、デフォルトコンストラクタを持つViewModel •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を使用してWPFアプリケーションを構築するためのプロジェクトテンプレート •Prism Unity App - PrismとUnityを使ってWPFアプリケーションを構築するためのプロジェクトテンプレート xamarinも対応していますが、ここでは説明省略。 今回は、Prism Unity Appを使用します。 プロジェクトの作成 •新しいプロジェクト > テンプレート > Prism > WPF > Prism Unity App(WPF)を選択。 •プロジェクト名を入力 PrismUnityApp.jpg こんな感じで、ディレクトリ構成やBootstrapperクラスも作ってくれます。 モジュールの追加•ソリューションを右クリック > 新しい項目 > Prism Module(WPF)を選択 WS000013.JPG Prismモジュールを追加をするとこんな感じに PrismUnityApp2.jpg ちょっと作成 ** 1.プロジェクトテンプレートでPrism Moduleを追加 [#p4da307b] •上の方で説明しましたがモジュールもプロジェクトテンプレートがあるので、そちらから追加をしておけば、Viewsフォルダなんかも作られています。 •なので、ここでは、一旦ソリューションをリビルドします。 ** 2.作成したPrism ModuleをWindowの方のプロジェクトで参照 [#vca73888] - 参照を右クリックして > 参照の追加 > プロジェクトタブを選択 > 追加したPrism Moduleのプロジェクトにチェックを入れる > OKを押下します。 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)this.ModuleCatalog; moduleCatalog.AddModule(typeof(PrismModule1.PrismModule1Module)); } } } ** 4.メインページの作成 [#n910bd40] •Prismモジュールで作成したプロジェクトのViewsフォルダにUserControlを作成します。 WS000702.JPG •今回は、「MainView」としています。 MainView.xaml <UserControl x:Class="PrismModule1.Views.MainView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:PrismModule1.Views" 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" HorizontalAlignment="Stretch" Text="「Prism Template Pack」サンプル" FontSize="20" Foreground="White" Margin="10"/> </Grid> <Grid Grid.Row="1" > <DataGrid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="10"></DataGrid> </Grid> </Grid> </UserControl> ** 5.領域の作成 [#wa7565f0] •PrismModule1Module.csを開いて領域の作成を行います。 •ここでもPrism Moduleのプロジェクトテンプレートで作成した場合は、ある程度作成されているので、Initializeメソッドを修正します。 PrismModule1Module.cs using Prism.Modularity; using Prism.Regions; using System; namespace PrismModule1 { public class PrismModule1Module : IModule { IRegionManager _regionManager; public PrismModule1Module(IRegionManager regionManager) { _regionManager = regionManager; } public void Initialize() { //throw new NotImplementedException(); _regionManager.RegisterViewWithRegion("ContentRegion", typeof(Views.MainView)); } } } ** 6.リビルドして、実行 [#af402018] •はい、これでMainViewがMainWindow内に表示されることが確認できました。 •WS000704.JPG * まとめ [#yb154ea2] プロジェクトテンプレートでちょこっとだけ手間が省けました。 とはいっても、いろいろと追記していかないといけないのですが、まず最初のディレクトリ構成を整えて、StartUp消して、Bootstrapperクラスを作成して・・・ とかのめんどくささからは、少しだけ解放といったところでしょうか? 普段社内でWPFアプリケーションは、MEFを使っていて、Unityって触れたことがないので、今後は、これを使って何かやってみます。 ちなみに古い記事ですがこんなのがありました。 リンク:Unity vs. MEF この記事は以下の記事からリンクされています [WPF][XAML]MahApps.Metroのタイルコントロールを使ったメニュー画面を作ってみるからリンク10ヶ月前 [WPF][XAML]InkCanvasを使ってみるからリンク8ヶ月前 [WPF][XAML]VB-ReportのWPF 用ビューアコントロールを使ってみるからリンク7ヶ月前 [WPF][XAML]InkCanvasにTextBoxを追加してみるからリンク3ヶ月前 * Reference [#t417a9f3] [[PrismとUnityを使うWPFプロジェクトテンプレートを使ってみる:https://qiita.com/HAGITAKO/items/adedbb6c70d2763543f2]]
テキスト整形のルールを表示する