Beispiel #1
0
        public YoutubeViewModel(YoutubeModel model)
        {
            this.model = model;

            //dinamically link the properties of the model through the viewmodel
            //only works if the property names are the same.
            model.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                this.GetType()
                    .GetProperties()
                    .FirstOrDefault((pi) => pi.Name == e.PropertyName)
                    .SetValue(this, sender.GetType()
                        .GetProperties()
                        .FirstOrDefault((pi) => pi.Name == e.PropertyName)
                        .GetValue(sender));
            };

            model.DownloadFinished += delegate(object sender, EventArgs e)
            {
                if (this.Model_DownloadFinished != null)
                    Model_DownloadFinished(this, EventArgs.Empty);
            };

            YoutubeDownloadVideoCommand = new DelegateCommand(param =>
            {
                try
                {
                    model.DownloadVideo();
                }
                catch { }
            });
            YoutubeUrlTextChangedCommand = new DelegateCommand(param =>
            {
                try
                {
                    model.GetVideoQualityOptions();
                }
                catch { }
            });

            TwitcherWindowCommand = new DelegateCommand(param =>
            {
                OnTwitcherWindowCommandInvoked();
            });
        }
Beispiel #2
0
        private void App_Startup(object sender, EventArgs e)
        {
            _model = new TwitcherModel();
            _viewModel = new TwitcherViewModel(_model);

            _viewModel.ExitApplication += delegate (object twitcherViewModelSender, EventArgs twitcherViewModelEventArgs)
            {
                Shutdown();
            };
            _viewModel.YoutubeWindowCommandInvoked += delegate (object twitcherViewModelSender, EventArgs twitcherViewModelEventArgs)
            {
                _view.Hide();

                youtubeModel = new YoutubeModel();
                youtubeViewModel = new YoutubeViewModel(youtubeModel);

                youtubeWindow = new YoutubeWindow();
                youtubeWindow.DataContext = youtubeViewModel;

                youtubeViewModel.TwitcherCommandInvoked += delegate (object youtubeViewModelSender, EventArgs youtubeViewModelEventArgs)
                {
                    youtubeWindow.Close();

                    _view.Show();
                };

                youtubeViewModel.Model_DownloadFinished += delegate (object youtubeViewModelSender, EventArgs youtubeViewModelEventArgs)
                {
                    MessageBox.Show("Download finished!", "Youtube video download", MessageBoxButton.OK);
                };

                youtubeWindow.Show();
            };

            _view = new MainWindow();
            _view.DataContext = _viewModel;

            _view.Show();
        }