Tengo un cuadro de texto vinculado a una clase con una propiedad de tipo Timespan y he escrito un convertidor de valor para convertir una cadena en TimeSpan.Cómo manejar una excepción en el convertidor de valor para que se muestre un mensaje de error personalizado
Si no se ingresa un número en el cuadro de texto, me gustaría que se muestre un mensaje de error personalizado (en lugar de la 'cadena de entrada predeterminada está en el formato incorrecto').
El código convertidor es:
public object ConvertBack(
object value,
Type targetType,
object parameter,
CultureInfo culture)
{
try
{
int minutes = System.Convert.ToInt32(value);
return new TimeSpan(0, minutes, 0);
}
catch
{
throw new FormatException("Please enter a number");
}
}
he puesto 'ValidatesOnExceptions = True' en la unión XAML.
Sin embargo, me he encontrado con el siguiente artículo de MSDN, lo que explica por qué el anterior no funcionará:.
"El motor de enlace de datos no significa capturar las excepciones que se tiran por un convertidor suministrado por el usuario Cualquier excepción que es lanzado por el método Convertir, o cualquier excepción no detectada lanzada por métodos que llama el método Convert, se tratan como errores de tiempo de ejecución "
He leído que 'ValidatesOnExceptions capta excepciones en TypeConverters, entonces mis preguntas específicas son:
- ¿Cuándo utilizar un TypeConverter durante un ValueConverter
- Suponiendo una TypeConverter no es la respuesta a la cuestión anterior, ¿cómo puedo mostrar mi mensaje de error personalizado en la interfaz de usuario
Los errores en los datos de WPF de unión se supone que debe ser transparente, de modo que un pequeño error no mata a toda la aplicación o interfaz de usuario.Puede registrar la excepción, pero intentar hacer cualquier otra cosa derrota el diseño del enlace de datos. – slugster