Я пытаюсь добиться следующего: < /p>
У меня есть диалог ввода с управлением текстовым полетом, где пользователь может ввести имя провинции. Есть два возможных действий: «Добавить провинцию» и «редактировать существующую провинцию». провинция с уже используемым именем, операция не может быть сделана). < /p>
< /li>
Имя провинции будет сохранено после обрезания пробелов (на обоих концах). < /p>
< /li>
< /ol>
. Элементы: < /p>
окно: < /p>
< /code>
Код за только за этим содержит базовый конструктор с вызовом to initializecomponent (). < /p>
Просмотр модели: < /p>
public class ProvinceViewVM : ViewModelBase
{
private string provinceName;
private bool isEdition;
public ProvinceViewVM()
{
ProvinceName = string.Empty;
isEdition = false;
}
public string ProvinceName
{
get => provinceName;
set => SetProperty(ref provinceName, value);
}
public bool IsEdition
{
get => isEdition;
set => isEdition = value;
}
public ICommand OKButtonCommand => new DelegateCommand(() => DialogResult = true);
public ICommand CancelButtonCommand => new DelegateCommand(() => DialogResult = false);
public bool? DialogResult
{
get { return dialogResult; }
private set { SetProperty(ref dialogResult, value); }
}
}
< /code>
Правило проверки данных: < /p>
public class ProvinceNameValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
if (value is string userInput)
{
if (string.IsNullOrWhiteSpace(userInput))
return new ValidationResult(false, "Must provide a value!");
// In some way, try to check if province name is already taken
// if (DataBase.CheckIfProvNameIsInUse(userInput))
// return new ValidationResult(false, "This name is in use. Provide another");
//
return ValidationResult.ValidResult;
}
return new ValidationResult(false, "Must provide a value!");
}
}
< /code>
Чего я пытаюсь достичь: < /p>
Пользователь добавил новую провинцию: < /p>
Правило валидации запустить, чтобы улавливать пустые значения < /li>
plun ulvation, чтобы поймать значения, уже используемое < /li>
. /> Редактирование пользователя существующая провинция: < /p>
Правило проверки запуска, чтобы поймать пустые значения < /li>
Правило проверки запуска, чтобы поймать значения, уже используемое ... но также позволить оставить значение без изменений. Отображает окно для редактирования имени провинции, но просто добавьте пространства (которые будут обрезаны) или просто ничего не менять. В этом случае правило проверки запустит ложное «дубликатное значение». < /P>
Проблема, с которой я сталкиваюсь: < /p>
Если я не введу какое -либо значение в текстовое поле, правило проверки не запускается (начальное значение == пустая строка). Это приводит к неверному результату, потому что значение не может быть пустой строкой.
Любые подсказки о возможных решениях?
Подробнее здесь: https://stackoverflow.com/questions/796 ... in-textbox