В окне кнопка, у которой свойство IsEnabled должно быть true только если Text в TextBox соответствует паттерну Regex. А в других случаях false.
Так же нужно соблюдать паттерн MVVM
<Button
Content="CLICK!"
Height="45"
IsEnabled="{Binding NameIsValid, Mode=OneWay}"
Width="127" />
<TextBox
Height="32"
Text="{Binding Name, Mode=OneWayToSource}"
FontSize="20"
Width="120"/>
public bool NameIsValid
{
get {
return new Regex(@"^([A-Z]|[А-Я]|І|Ї)([a-z]|[а-я]|і|ї)+").IsMatch(Name);
}
}
public string Name
{
get => user.Name;
set {
user.Name = value;
OnPropertyChanged("Name");
OnPropertyChanged("NameIsValid");
}
}
При вводе валидного значение в TextBox свойство IsEnabled у кнопки не обновляется, а остается таким какое было при запуске.
Как правильно обновлять свойство элемента при изменении другого в моем случае?
Обнаружил, что обновление случается, только когда TextBox выходит из фокуса. А можно ли что бы сразу при наборе текста были видны обновления?
Проблема была в том, что привязка обновлялась при потере фокуса, что является поведением по умолчанию для текстбокса. Вам же нужно вот это
<TextBox Text="{Binding Name, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged}" />
Обновление привязки при изменении свойства Text текстбокса.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости