private void OnPropertyChanged(object sender, PropertyChangedEventArgs args)
 {
     // Sample of strongly typed property changed checking (MyToolkit only)
     if (args.IsProperty<MvvmSamplePageModel>(i => i.DependentProperty))
     {
         // TODO: Add logic for handling DependentProperty change
     }
 }
        /// <summary>Called when a property needs to be validated. </summary>
        /// <param name="sender">The sender. </param>
        /// <param name="args">The arguments. </param>
        protected virtual void OnValidateProperty(object sender, PropertyChangedEventArgs args)
        {
            if (AutoValidateProperties &&
                !args.IsProperty<ValidatedObservableObject>(o => o.HasErrors) &&
                !args.IsProperty<ValidatedObservableObject>(o => o.InvalidProperties) &&
                !args.IsProperty<ValidatedObservableObject>(o => o.InvariantErrors))
            {
                var propertyErrors = ValidateProperty(args.PropertyName);
                SetPropertyErrors(args.PropertyName, propertyErrors);

                var invariantErrors = ValidateInvariants();
                SetPropertyErrors(string.Empty, invariantErrors);
            }
        }
        private void UndoRedoManagerOnPropertyChanged(object sender, PropertyChangedEventArgs args)
        {
            if (args.IsProperty<UndoRedoManager>(i => i.CanUndo))
            {
                UndoCommand.RaiseCanExecuteChanged();

                SaveDocumentCommand.RaiseCanExecuteChanged();
                SaveDocumentAsCommand.RaiseCanExecuteChanged();
            }

            if (args.IsProperty<UndoRedoManager>(i => i.CanRedo))
                RedoCommand.RaiseCanExecuteChanged();
        }