アプリケーションの完成
これで部品はすべて出揃いました。あとか各インスタンスを生成し、MainWindowとMainWindowViewModel、およびMainWindowsViewModelとCounterModelとを接続すれば完成です。インスタンスはAppに持たせ、インスタンス間の接続はMainWindowのコンストラクタで行うことにします。
using System.Windows;
namespace DataBindingSample {
public partial class App : Application {
public MainWindowViewModel ViewModel { get { return viewmodel_; } }
public CounterModel Model { get { return model_; } }
private MainWindowViewModel viewmodel_ = new MainWindowViewModel();
private CounterModel model_ = new CounterModel();
}
}
using System.Windows;
namespace DataBindingSample {
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
App app = Application.Current as App;
DataContext = app.ViewModel;
app.ViewModel.IncCommand = new DelegateCommand(app.Model.Increment);
app.ViewModel.DecCommand = new DelegateCommand(app.Model.Decrement);
app.Model.CountUpdated += app.ViewModel.Update;
}
}
}
各クラスの関連図を示しておきます。
まとめ
……我ながらくだらん遊びをやりますなぁ。とは言え、いくつかの言語をそこそこ読める/書けると何かと重宝しますよ。C#のサンプルが山ほどあるのにVBしかわかんないとか、C/C++のライブラリがC#/VBから使えないとか、もったいないじゃないですか。Visual Studio 2012 RCがリリースされたし、Windows 8ももうすぐだし、せっかくだから(?)もうひとつ、使える言語を増やしてみてはいかがでしょう。

