public void RegisterChildViewModel(ControlViewModelBase controlViewModelBase, ViewModelProviderAction viewModelProviderAction)
        {
            if (controlViewModelBase != null)
              {
            ChildrenViewModels.Add(controlViewModelBase, viewModelProviderAction);

            if (((viewModelProviderAction & ViewModelProviderAction.IsReadOnlyChanged) == ViewModelProviderAction.IsReadOnlyChanged) ||
              ((viewModelProviderAction & ViewModelProviderAction.EditingModeChanged) == ViewModelProviderAction.EditingModeChanged))
            {
              controlViewModelBase.PropertyChanged +=
            new System.ComponentModel.PropertyChangedEventHandler(controlViewModelBase_PropertyChanged);
            }

            if ((viewModelProviderAction & ViewModelProviderAction.RefreshInvoked) == ViewModelProviderAction.RefreshInvoked)
            {
              controlViewModelBase.Refreshed += new EventHandler(controlViewModelBase_Refreshed);
            }

            if (controlViewModelBase is IEditableControlViewModel && ((viewModelProviderAction & ViewModelProviderAction.SaveInvoked) == ViewModelProviderAction.SaveInvoked))
            {
              ((IEditableControlViewModel)controlViewModelBase).ItemSaved += new EventHandler(ViewModelProvider_ItemSaved);
            }

            if (controlViewModelBase is IListingEditableControlViewModel && ((viewModelProviderAction & ViewModelProviderAction.DeleteInvoked) == ViewModelProviderAction.DeleteInvoked))
            {
              ((IListingEditableControlViewModel)controlViewModelBase).ItemDeletedFlagChanged += new EventHandler(ViewModelProvider_ItemDeleted);
            }
              }
        }
 public void RegisterChildViewModel(ControlViewModelBase controlViewModelBase)
 {
     RegisterChildViewModel(controlViewModelBase, ViewModelProviderAction.IsReadOnlyChanged | ViewModelProviderAction.EditingModeChanged | ViewModelProviderAction.RefreshInvoked);
 }
 public ViewModelProvider(ControlViewModelBase parentViewModel)
 {
     ParentViewModel = parentViewModel;
       ChildrenViewModels = new Dictionary<ControlViewModelBase, ViewModelProviderAction>();
 }
 public ViewModelProviderActionEventArgs(ControlViewModelBase viewModel)
 {
     ViewModel = viewModel;
 }
 private void OnChildrenViewModelSaveInvoked(ControlViewModelBase viewModel)
 {
     if (ChildrenViewModelSaveInvoked != null && viewModel != null)
       {
     ChildrenViewModelSaveInvoked(this, new ViewModelProviderActionEventArgs(viewModel));
       }
 }
 private void OnChildrenViewModelIsReadOnlyChanged(ControlViewModelBase viewModel)
 {
     if (ChildrenViewModelIsReadOnlyChanged != null && viewModel != null)
       {
     ChildrenViewModelIsReadOnlyChanged(this, new ViewModelProviderActionEventArgs(viewModel));
       }
 }