summaryrefslogtreecommitdiff
path: root/Noddybox.WindowsPhone.Silverlight/ViewModels/BaseViewModel.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Noddybox.WindowsPhone.Silverlight/ViewModels/BaseViewModel.cs')
-rw-r--r--Noddybox.WindowsPhone.Silverlight/ViewModels/BaseViewModel.cs83
1 files changed, 83 insertions, 0 deletions
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 <http://www.gnu.org/licenses/>.
+//
+// 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
+{
+ /// <summary>
+ /// Provides a base for view models.
+ /// </summary>
+ public class BaseViewModel : INotifyPropertyChanged
+ {
+ #region SetValue
+
+ /// <summary>
+ /// Sets a value in the model.
+ /// </summary>
+ /// <typeparam name="T">The type of the value.</typeparam>
+ /// <param name="member">A reference to the member variable.</param>
+ /// <param name="value">The new value.</param>
+ /// <param name="names">The propertys to change if the value has changed.</param>
+ protected void SetValue<T>(ref T member, T value, params string[] names)
+ {
+ if (!value.Equals(member))
+ {
+ member = value;
+
+ foreach (string name in names)
+ {
+ NotifyPropertyChanged(name);
+ }
+ }
+ }
+
+ #endregion
+
+ #region Notify
+
+ /// <summary>
+ /// Notifies handlers of a property change.
+ /// </summary>
+ /// <param name="propertyName">The property's name.</param>
+ protected void NotifyPropertyChanged(string propertyName)
+ {
+ if (PropertyChanged != null)
+ {
+ PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+ }
+ }
+
+ #endregion
+
+ #region INotifyPropertyChanged Members
+
+ public event PropertyChangedEventHandler PropertyChanged;
+
+ #endregion
+ }
+}