예제 #1
0
        /// <summary>
        /// Notifies all interested view models of an event that took place.
        /// </summary>
        /// <param name="viewModel">The view model.</param>
        /// <param name="viewModelEvent">The view model event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="viewModel"/> is <c>null</c>.</exception>
        /// <exception cref="ArgumentNullException">The <paramref name="e"/> is <c>null</c>.</exception>
        private void NotifyViewModelsOfEvent(IViewModel viewModel, ViewModelEvent viewModelEvent, EventArgs e)
        {
            Argument.IsNotNull("viewModel", viewModel);
            Argument.IsNotNull("e", e);

            lock (_lock)
            {
                var viewModels = (from viewModelKeyValuePair in _interestedViewModels
                                  select viewModelKeyValuePair.Value);

                foreach (var vm in viewModels)
                {
                    try
                    {
                        var notifyableViewModel = vm as INotifyableViewModel;
                        if (notifyableViewModel != null)
                        {
                            notifyableViewModel.ViewModelEvent(viewModel, viewModelEvent, e);
                        }
                    }
                    catch (Exception ex)
                    {
                        Log.Error(ex, "Failed to let an interested view model know that a view model has changed. Probably the view model is not correctly cleaned up");
                    }
                }
            }
        }
예제 #2
0
 public void OnViewModelEvent(ViewModelEvent viewModelEvent)
 {
     if (viewModelEvent.EventId == ViewModelEvent.RegisteredEventId.FOCUS_SETUP_WIZARD_PROXY_SETTINGS_ADDRESS_TEXT_BOX)
     {
         proxyAddressTextBox.Focus();
     }
 }
 public void OnViewModelEvent(ViewModelEvent viewModelEvent)
 {
     if (viewModelEvent.EventId == ViewModelEvent.RegisteredEventId.FOCUS_SEARCH_TEXT_BOX)
     {
         searchTextBox.Focus();
     }
 }
예제 #4
0
 public void OnViewModelEvent(ViewModelEvent viewModelEvent)
 {
     if (viewModelEvent.EventId == ViewModelEvent.RegisteredEventId.BRING_TO_FRONT)
     {
         Activate();
     }
 }
예제 #5
0
 protected override void OnViewModelEvent(IViewModel viewModel, ViewModelEvent viewModelEvent, System.EventArgs e)
 {
     if (viewModel is InterestingViewModel)
     {
         ViewModelEvents.Add(viewModelEvent);
     }
 }
예제 #6
0
 /// <summary>
 /// Set the ViewModelBase dependencies.
 /// </summary>
 protected override void SetupViewModelBase()
 {
     base.SetupViewModelBase();
     Log($"Setting up Wpf ViewModelBase.");
     ViewModelBase.SetContainer(_container);
     ViewModelEvent.SetViewModelManager(_container.Resolve <IViewModelsManager>());
 }
예제 #7
0
 public void OnViewModelEvent(ViewModelEvent viewModelEvent)
 {
     if (viewModelEvent.EventId == ViewModelEvent.RegisteredEventId.FOCUS_SQL_QUERY_TEXT_BOX)
     {
         Dispatcher.InvokeAsync(() =>
         {
             sqlQueryTextBox.Focus();
         }, DispatcherPriority.ApplicationIdle);
     }
 }
예제 #8
0
 public void OnViewModelEvent(ViewModelEvent viewModelEvent)
 {
     if (viewModelEvent.EventId == ViewModelEvent.RegisteredEventId.SCROLL_TO_SELECTION)
     {
         if (downloaderListBox.SelectedItems.Count > 0)
         {
             downloaderListBox.ScrollIntoView(downloaderListBox.SelectedItems[0]);
         }
     }
 }
예제 #9
0
        /// <summary>
        /// Notifies all interested view models of an event that took place.
        /// </summary>
        /// <param name="viewModel">The view model.</param>
        /// <param name="viewModelEvent">The view model event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="viewModel"/> is <c>null</c>.</exception>
        /// <exception cref="ArgumentNullException">The <paramref name="e"/> is <c>null</c>.</exception>
        private void NotifyViewModelsOfEvent(IViewModel viewModel, ViewModelEvent viewModelEvent, EventArgs e)
        {
            Argument.IsNotNull("viewModel", viewModel);
            Argument.IsNotNull("e", e);

            lock (_lock)
            {
                var viewModels = (from viewModelKeyValuePair in _interestedViewModels
                                  select viewModelKeyValuePair.Value).ToList();

                foreach (var vm in viewModels)
                {
                    try
                    {
                        var notifyableViewModel = vm as INotifyableViewModel;
                        if (notifyableViewModel != null)
                        {
                            notifyableViewModel.ViewModelEvent(viewModel, viewModelEvent, e);
                        }
                    }
                    catch (Exception ex)
                    {
                        Log.Error(ex, "Failed to let an interested view model know that a view model has changed. Probably the view model is not correctly cleaned up");
                    }
                }
            }
        }
예제 #10
0
 /// <summary>
 /// Called when an event for a view model type that the current view model is interested in has been raised. This can
 /// be accomplished by decorating the view model with the <see cref="InterestedInAttribute"/>.
 /// </summary>
 /// <param name="viewModel">The view model.</param>
 /// <param name="viewModelEvent">The view model event.</param>
 /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
 protected virtual void OnViewModelEvent(IViewModel viewModel, ViewModelEvent viewModelEvent, EventArgs e)
 {
 }
예제 #11
0
        /// <summary>
        /// Views the model event.
        /// </summary>
        /// <param name="viewModel">The view model.</param>
        /// <param name="viewModelEvent">The view model event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        /// <remarks>
        /// This method should only be called by Catel so the <see cref="ManagedViewModel"/> can invoke it. This method is only used as a pass-through
        /// to the actual <see cref="OnViewModelEvent"/> method.
        /// </remarks>
        void INotifyableViewModel.ViewModelEvent(IViewModel viewModel, ViewModelEvent viewModelEvent, EventArgs e)
        {
            Log.Debug("A view model ('{0}') the current view model ('{1}') is interested in has raised an event ('{2}')",
                viewModel.GetType(), GetType(), viewModelEvent.ToString());

            OnViewModelEvent(viewModel, viewModelEvent, e);
        }
예제 #12
0
 protected override void OnViewModelEvent(IViewModel viewModel, ViewModelEvent viewModelEvent, System.EventArgs e)
 {
     if (viewModel is InterestingViewModel)
     {
         ViewModelEvents.Add(viewModelEvent);
     }
 }
 public void OnViewModelEvent(ViewModelEvent viewModelEvent)
 {
 }