画面コードの作成
最後に画面に連結するためのコードをMainForm.vbに記述しましょう。
Public Class MainForm
Private ViewModel As New MainViewModel
Private Me_BindingSource As New BindingSource
Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles Me.Load
Me.Result_DataGridView.AutoGenerateColumns = False
Me.Me_BindingSource.DataSource = ViewModel
Me.Result_DataGridView.DataSource = Me.Me_BindingSource
Me.Result_DataGridView.DataMember = "Address"
End Sub
Private Sub Search_Button_Click(sender As Object,
e As EventArgs) _
Handles Search_Button.Click
Call Me.ViewModel.GetAddress(Me.PostCode_TextBox.Text)
End Sub
End Class
DataGridViewのAutoGenerateColumnsプロパティは、なぜかプロパティウィンドウで設定できませんが、このプロパティをFalseにしておかないと、事前に設定したColumnsが無視されてデータが表示されてしまうので注意してください。なお、AutoGenerateColumnsプロパティは逆転の発想で最初はTrueにしておいて、どのようなフィールド名でデータが格納しているかを一気に調べることに使うという手もあります。
実行
それでは完成したプロジェクトのプロジェクト構成を確認してみましょう。
クラスを用途別のフォルダに分けることで、かなりすっきりした構成になっていると思います。ビルドでエラーがでないようであればさっそく実行してみましょう。
デフォルトで郵便番号を設定していますので、画面が表示されたら[住所検索]ボタンをクリックしてみてください。
グレープシティ本社の住所が表示できれば正常に動作しています。
WPFアプリで使用する
ツールボックスへの追加
Visual Studioのツールボックスは、タブや登録済コントロールの表示をWindowsフォームアプリとWPFアプリで別になるように制御しています。
そのため、例えばWindowsフォームアプリのプロジェクトでツールボックスに「GrapeCity Win」というタブを作っても、WPFアプリのプロジェクトではそのタブは表示されません。しかしWPF側で「GrapeCity Win」という名前でタブを登録しようとしても、既存チェックにひっかかりタブを作ることができません。
そこで、ツールボックスを右クリックして[タブの追加]を選択し、「GrapeCity WPF」タブを追加します。そして、「GrapeCity WPF」タブの下を右クリックして[アイテムの選択]を選択してダイアログを表示します。
一覧で「GrapeCity.Windows.JPAddress」をチェックして[OK]ボタンをクリックすれば、ツールボックスに追加できます。ここで、Visual Studioを再起動しておくとよいでしょう。

