Exemple:

Un modèle avec une propriété age nullable pouvant supporter également la validation (avec les data annotations)

public class User 
{
    private int? age;
    [Range(0,150, ErrorMessage = "Please, enter a valid age.")]
    public int? Age
    {
        get { return age; }
        set
        {
            Set(ref age, value);
        }
    }
}

On crée un converter pour le type int?

public class NullableValueConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        if(!string.IsNullOrEmpty((string)value) && int.TryParse(value.ToString(), out int result))
        {
            return result;
        }
        return value;
    }
}

Binding

On définit le converter en ressource de la page par exemple.

<Page.Resources>
    <local:NullableValueConverter x:Key="NullableValueConverter"></model:NullableValueConverter>
</Page.Resources>

Puis on l’utilise pour convertir la value

<TextBox Header="Age" Text="{Binding User.Age, Mode=TwoWay, Converter={StaticResource NullableValueConverter}, UpdateSourceTrigger=PropertyChanged}"  Margin="5,0"></TextBox>

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *