using MaterialDesignThemes.Wpf; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Tango.FSE.Common.Notifications { public class InputBoxVM : MessageBoxVM { public PackIconKind Icon { get; set; } public String InputHint { get; set; } public int MaxCharacters { get; set; } internal Func ValidationFunction { get; set; } private String _input; public String Input { get { return _input; } set { _input = value; RaisePropertyChangedAuto(); if (_input.IsNotNullOrEmpty()) { if (ValidationFunction != null) { Error = ValidationFunction.Invoke(_input); } } else { Error = null; } RaisePropertyChanged(nameof(HasValidationError)); InvalidateRelayCommands(); } } public bool HasValidationError { get { return !String.IsNullOrWhiteSpace(Error); } } private String _error; public String Error { get { return _error; } set { _error = value; RaisePropertyChangedAuto(); } } public InputBoxVM() : base() { HasCancel = true; } protected override bool CanOK() { return base.CanOK() && Input.IsNotNullOrEmpty() && !HasValidationError; } } }