У меня в диалогом окне есть 5 элементов xaml texbox у каждый элемент имеет свою валидацию
<xctk:WatermarkTextBox Watermark="{Binding FirstNameBtnText}"
x:Name="FirstNameTextBox"
Text="{Binding Path=FirstNameProp,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged,
ValidatesOnDataErrors=True}"
/>
<xctk:WatermarkTextBox Watermark="{Binding SecondNameBtnText}"
x:Name="SecondNameTextBox"
Text="{Binding Path=LastNameProp,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged,
ValidatesOnDataErrors=True}"/>
<xctk:WatermarkTextBox Watermark="{Binding AdressBtnText}"
x:Name="AdressTextBox"
Text="{Binding Path=AdressProp,
Mode=TwoWay,ValidatesOnDataErrors=True,
UpdateSourceTrigger=PropertyChanged}"/>
В code behaind реализован интерфейс IDataErrorInfo
public string this[string columnName]
{
get
{
switch (columnName)
{
case nameof(FirstNameProp):
{
return UiString.ControlString(FirstNameProp);
}
case nameof(LastNameProp):
{
return UiString.ControlString(LastNameProp);
}
return null;
}
}
Я не понимаю как правильно выстроить валидацию, чтобы кнопка сохранить изменения была активна только при том условии что все texbox проходят валидацию. Я понимаю что это нужно делать через команду, но вот как связать ошибки всех полей не понятно.
Как вариант, в модель данных добавить свойство bool AllFieldsIsValid (ну или что-нибудь в этом роде), и привязать его к свойству IsEnabled кнопки "сохранить", при реализации интерфейса IDataErrorInfo определить значение для AllFieldsIsValid.
PS. костыль конечно, но должно работать)
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости