protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            var viewModel = new MainViewModel();
            var proxy = CreateProxy(viewModel);
            proxy.InitializeCommand();
            var view = new MainView(proxy);
            new Window { Content = view, Topmost = true, Width = 300, Height = 200 }.Show();
        }
        public MainViewModelInterceptor(MainViewModel mainViewModel)
        {
            _mainViewModel = mainViewModel;

            RaisePropertyChanged = _mainViewModel.GetType().GetMethod(
                "RaisePropertyChanged",
                BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic,
                null,
                new[] { typeof(string) },
                null);
        }
 MainViewModel CreateProxy(MainViewModel mainViewModel)
 {
     var proxyFactory = new ProxyFactory();
     return proxyFactory.CreateProxy<MainViewModel>(new MainViewModelWrapper(mainViewModel));
 }