summaryrefslogtreecommitdiff
path: root/Juick/ViewModels/Validation/DataViewModelBase.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Juick/ViewModels/Validation/DataViewModelBase.cs')
-rw-r--r--Juick/ViewModels/Validation/DataViewModelBase.cs44
1 files changed, 44 insertions, 0 deletions
diff --git a/Juick/ViewModels/Validation/DataViewModelBase.cs b/Juick/ViewModels/Validation/DataViewModelBase.cs
new file mode 100644
index 0000000..dcbf34b
--- /dev/null
+++ b/Juick/ViewModels/Validation/DataViewModelBase.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+
+namespace Juick.ViewModels.Validation
+{
+ public class DataViewModelBase : ViewModelBase, IDataErrorInfo
+ {
+
+ private readonly Dictionary<String, List<String>> _errors =
+ new Dictionary<string, List<string>>();
+
+ // Adds the specified error to the errors collection if it is not already
+ // present, inserting it in the first position if isWarning is false.
+ public void AddError(string propertyName, string error, bool isWarning)
+ {
+ if (!_errors.ContainsKey(propertyName))
+ _errors[propertyName] = new List<string>();
+
+ if (_errors[propertyName].Contains(error)) return;
+ if (isWarning) _errors[propertyName].Add(error);
+ else _errors[propertyName].Insert(0, error);
+ }
+
+ // Removes the specified error from the errors collection if it is present.
+ public void RemoveError(string propertyName, string error)
+ {
+ if (!_errors.ContainsKey(propertyName) || !_errors[propertyName].Contains(error)) return;
+ _errors[propertyName].Remove(error);
+ if (_errors[propertyName].Count == 0) _errors.Remove(propertyName);
+ }
+
+ public string Error { get { throw new NotImplementedException(); } }
+
+ public string this[string columnName]
+ {
+ get
+ {
+ return (!_errors.ContainsKey(columnName) ? null :
+ String.Join(Environment.NewLine, _errors[columnName]));
+ }
+ }
+ }
+}