using System.ComponentModel; namespace Prism4Demo.Common.BaseClasses { public abstract class ViewModelBase : INotifyPropertyChanging, INotifyPropertyChanged { #region INotifyPropertyChanging Members public event PropertyChangingEventHandler PropertyChanging; #endregion #region INotifyPropertyChanged Members public event PropertyChangedEventHandler PropertyChanged; #endregion #region Administrative Properties /// <summary> /// Whether the view model should ignore property-change events. /// </summary> public virtual bool IgnorePropertyChangeEvents { get; set; } #endregion #region Public Methods /// <summary> /// Raises the PropertyChanged event. /// </summary> /// <param name="propertyName">The name of the changed property.</param> public virtual void RaisePropertyChangedEvent(string propertyName) { // Exit if changes ignored if (IgnorePropertyChangeEvents) return; // Exit if no subscribers if (PropertyChanged == null) return; // Raise event var e = new PropertyChangedEventArgs(propertyName); PropertyChanged(this, e); } /// <summary> /// Raises the PropertyChanging event. /// </summary> /// <param name="propertyName">The name of the changing property.</param> public virtual void RaisePropertyChangingEvent(string propertyName) { // Exit if changes ignored if (IgnorePropertyChangeEvents) return; // Exit if no subscribers if (PropertyChanging == null) return; // Raise event var e = new PropertyChangingEventArgs(propertyName); PropertyChanging(this, e); } #endregion } }
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)