From aba818f3b66751842f457169ff1cfa58fc43dd84 Mon Sep 17 00:00:00 2001 From: Ian C Date: Sun, 24 Jun 2012 22:37:32 +0000 Subject: Development check in --- .../ViewModels/BaseViewModel.cs | 83 ++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 Noddybox.WindowsPhone.Silverlight/ViewModels/BaseViewModel.cs (limited to 'Noddybox.WindowsPhone.Silverlight/ViewModels/BaseViewModel.cs') diff --git a/Noddybox.WindowsPhone.Silverlight/ViewModels/BaseViewModel.cs b/Noddybox.WindowsPhone.Silverlight/ViewModels/BaseViewModel.cs new file mode 100644 index 0000000..c20e122 --- /dev/null +++ b/Noddybox.WindowsPhone.Silverlight/ViewModels/BaseViewModel.cs @@ -0,0 +1,83 @@ +// This file is part of the Noddybox.WindowsPhone C# suite. +// +// Noddybox.Emulation is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Noddybox.Emulation is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Noddybox.Emulation. If not, see . +// +// Copyright (c) 2012 Ian Cowburn +// +using System; +using System.Net; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Shapes; +using System.ComponentModel; + +namespace Noddybox.WindowsPhone.Silverlight.ViewModels +{ + /// + /// Provides a base for view models. + /// + public class BaseViewModel : INotifyPropertyChanged + { + #region SetValue + + /// + /// Sets a value in the model. + /// + /// The type of the value. + /// A reference to the member variable. + /// The new value. + /// The propertys to change if the value has changed. + protected void SetValue(ref T member, T value, params string[] names) + { + if (!value.Equals(member)) + { + member = value; + + foreach (string name in names) + { + NotifyPropertyChanged(name); + } + } + } + + #endregion + + #region Notify + + /// + /// Notifies handlers of a property change. + /// + /// The property's name. + protected void NotifyPropertyChanged(string propertyName) + { + if (PropertyChanged != null) + { + PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); + } + } + + #endregion + + #region INotifyPropertyChanged Members + + public event PropertyChangedEventHandler PropertyChanged; + + #endregion + } +} -- cgit v1.2.3