В настоящее время у меня есть ряд текстовых полей, и я хотел бы проверить, что в них набирается ((есть 3 x 7 текстовых полей, в зависимости от недель).
Я пытаюсь использовать ValidatesOnExceptions, например это:
https://docs.microsoft.com/en-us/dotnet/api/system.windows.data.binding.validatesonexceptions?view=netcore-3.1
Object WeekValues:
public string RepasLundi
{
get
{
return _RepasLundi;
}
set
{
_RepasLundi = value;
if ((value == null) || (value == "") || (value == "A") || (value == "G") || (value == "P"))
{
//its ok
}
else
{
throw new ArgumentException("Valeur invalide");
}
RaisePropertyChanged(nameof(RepasLundi));
}
}
private string _RepasMardi;
public string RepasMardi
{
get
{
return _RepasMardi;
}
set
{
_RepasMardi = value;
if ((value == null) || (value == "") || (value == "A") || (value == "G") || (value == "P"))
{
//its ok
}
else
{
throw new ArgumentException("Valeur invalide");
}
RaisePropertyChanged(nameof(RepasMardi));
}
}
ViewModel:
private WeekValues _PriseSemaine1;
public WeekValues PriseSemaine1
{
get
{
return _PriseSemaine1;
}
set
{
if (value != _PriseSemaine1)
{
_PriseSemaine1 = value;
RaisePropertyChanged(nameof(PriseSemaine1));
}
}
}
WPF:
<TextBox Grid.Row="2" Grid.Column="1" Width="20" Height="20" VerticalAlignment="Center" HorizontalAlignment="Center" HorizontalContentAlignment="Center" CharacterCasing="Upper" Background="{Binding ErrorColor}" Text="{Binding PriseSemaine1.RepasLundi, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" MaxLength="1">
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
Я думал, что это сработает, но в консоли появилось сообщение об ошибке: «System. Windows .Data Error: 8: Невозможно сохранить значение из цели обратно в источник».
Есть какие-нибудь советы по этому поводу?