/// Base class for the View Models which includes setField to check new values are different,
/// and OnPropertyChanged which causes updates throughout the application.
public abstract class ViewModelBase : INotifyPropertyChanged
/// Called whenever a property is changed to update bindings.
/// <param name="propertyName">The name of the property that has changed.</param>
public void OnPropertyChanged(string propertyName)
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
public event PropertyChangedEventHandler PropertyChanged;
/// Provides a method of checking whether the value supplied in the setter is different
/// from the current value.
/// <typeparam name="T">The Field/Value type.</typeparam>
/// <param name="field">The field that has been set.</param>
/// <param name="value">The new value.</param>
/// <param name="propertyName">The name of the property for OnPropertyChanged.</param>
/// <param name="onSet">Any validation/additional operations as an action.</param>
protected void SetField<T>(ref T field, T value, string propertyName, Action onSet = null)
if (Object.Equals(field, value))
if (onSet != null)
field = value;
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)