Files
@ a5faa82faf6a
Branch filter:
Location: ATITD-Tools/Desert-Paint-Codex/ViewModels/ValidatableViewModelBase.cs - annotation
a5faa82faf6a
1.7 KiB
text/x-csharp
Import and Export should be working correctly. Can now import Practical Paint
reactions.txt files. Fixed a crash taht occurred when switching profiles.
reactions.txt files. Fixed a crash taht occurred when switching profiles.
40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 | using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
namespace DesertPaintCodex.ViewModels
{
public class ValidatableViewModelBase : ViewModelBase, INotifyDataErrorInfo
{
private static readonly string [] NoErrors = new string[0];
private Dictionary <string, List<string>> _errorsByPropertyName = new () ;
public IEnumerable GetErrors(string? propertyName)
{
if (propertyName != null && _errorsByPropertyName. TryGetValue(propertyName, out var errorList))
{
return errorList;
}
return NoErrors;
}
protected virtual void SetError(string propertyName, string error)
{
if (_errorsByPropertyName.TryGetValue(propertyName, out var errorList))
{
if (!errorList.Contains(error))
{
errorList.Add(error);
}
}
else
{
_errorsByPropertyName.Add(propertyName, new List<string> {error});
}
ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs(propertyName));
}
protected virtual void RemoveErrors(string propertyName)
{
if (_errorsByPropertyName.ContainsKey(propertyName))
{
_errorsByPropertyName.Remove(propertyName);
ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs(propertyName));
}
}
public bool HasErrors => _errorsByPropertyName.Count > 0 ;
public event EventHandler<DataErrorsChangedEventArgs>? ErrorsChanged;
}
}
|