WPF WVVMを使ったウィンドウをhm.NETで利用してみる

概要

先程はVisual Studioで作ったWPFをhm.NETで利用してみました。
この章では延長として、WVVM型も念のためみてみましょう。

WVVMとは何か? といった疑問点がある方は、この章はスルーしてOKです。
WVVMは比較的大型なプロジェクトで用いる実装パターンの考え方の1つですので、
エディタの拡張機能を作るという意味では、あまり利用するメリットはないためです。
学習したい方は、このページの末尾に学習に向いたPDFを紹介しています。

ダウンロード

下記のファイルは、以降の解説記事の内容のソリューションとなります。

更新日 2021/09/04
HMNET_WpfWVVMSample.zip

HMNET_WpfWVVMSample.zip を右クリックでプロパティで、「許可する(もしくはブロック解除する)」を適用してください。

ViewModelのクラスとXamlのバインドは、ウィンドウ生成とともに行う。

  • C#側のソース

    MyTestForm.cs
    using System;
    using System.Runtime.InteropServices;
    using System.Windows;
    
    namespace WpfWVVMSample
    {
        public partial class AppHmInterface
        {
            public static Window wpfWindow;
    
            public static IntPtr CreateForm()
            {
                if (wpfWindow != null)
                {
                    wpfWindow.Close();
                    wpfWindow = null;
                }
    
                wpfWindow = new MainView();
                var vm = new MainViewModel();
                wpfWindow.DataContext = vm;
                wpfWindow.Show();
    
                return (IntPtr)1;
            }
    
            // 秀丸のバージョンで引数が渡ってくるものと渡ってこないものがあるので、
            // 両対応にするためデフォルト引数の0が必要。
            public static IntPtr OnDetachMethod(IntPtr reason)
            {
                // 秀丸エディタが閉じられる前に実行されるコード
                // このWPFアプリケーションを終了します。
                if (wpfWindow != null)
                {
                    wpfWindow.Close();
                    wpfWindow = null;
    
                    // このメソッドが通過したことをわかりやすくするため、終了理由の番号をダイアログボックスで表示
                    MessageBox.Show("OnDetachMethod");
                }
    
                return (IntPtr)0;
            }
        }
    }
                    

Xamlを編集するなら「デザイン時のDataContextの設定」がオススメ

一度プロジェクトをコンパイルした後」の話となりますが、
Xamlを編集するのであれば、「デザイン時のDataContextの設定」を設定しておくのが入力補完がかかるのでオススメです。

まずは、Xamlの編集画面のメインとなるウィンドウにフォーカスを当てて...

PICTURE

メニューの「書式」→「デザイン時のDataContextの設定」をして...

PICTURE

「DesignInstance」を選択して「ViewMode」の役割を果たしているクラスを選びます。

PICTURE

するとXamlが編集されるので保存

以上で、XamlからViewModelのプロパティなどが自動補完の候補に含まれるようになります。 PICTURE

WPF & Xamlの学習

ここではWPFのWVVMについての秀丸マクロのCOMとのコネクトを紹介しました。
C#は利用してきていても、WinFormを中心にプログラミングされてきた方は、XamlやWVVMは利用していないと思います。
そのような方は、下記サイトのPDFファイルで、
Xamlおよび、WVVMによるプログラミングを習得するのが良いかと思います。

WPF 入門

WPF 入門

WPF 実践

WPF 実践

WPF 逆引き集

WPF 逆引き集