Comment utiliser IDataErrorInfo.Erreur dans un programme WPF?
J'ai un objet comme ça:
public class Person : IDataErrorInfo
{
public string PersonName{get;set;}
public int Age{get;set;}
string IDataErrorInfo.this[string propertyName]
{
get
{
if(propertyName=="PersonName")
{
if(PersonName.Length>30 || PersonName.Length<1)
{
return "Name is required and less than 30 characters.";
}
}
return null;
}
}
string IDataErrorInfo.Error
{
get
{
if(PersonName=="Tom" && Age!=30)
{
return "Tom must be 30.";
}
return null;
}
}
}
De liaison de la PersonName et de l'Âge des propriétés est facile:
<TextBox Text="{Binding PersonName, ValidatesOnDataErrors=True}" />
<TextBox Text="{Binding Age, ValidatesOnDataErrors=True}" />
Cependant, comment puis-je utiliser l'Erreur de la propriété et de l'afficher de manière appropriée?
- J'ai finalement trouvé une solution de contournement et j'ai fait un post ici.
- L'Erreur de la propriété n'est pas vraiment utilisé dans WPF. Vous pouvez même jeter un NotImplementedException là. IDataErrorInfo a été utilisé par WPF "parce qu'il était déjà là", mais seulement pour le présent[] partie. Pas le plus joli coin de WPF, je pense.
- vous pouvez poster une réponse à cette question. Ça fait 3-4 ans et il n'y a pas de réponse 😉
Vous devez vous connecter pour publier un commentaire.
Vous devez modifier la zone de texte de style de sorte qu'il montre quel est le problème avec la propriété. Voici un exemple simple qui montre l'erreur comme info-bulle:
Il suffit de le mettre à l'intérieur de l'Application.Les ressources de votre application.fichier xaml et il seront appliqués pour chaque zone de saisie de votre demande:
Voici un exemple, adapté de cette question, qui montre comment l'affichage de l'erreur dans l'info-bulle:
Error
obtenir ne sera probablement pas appelée dans ce cas. LeIDataErrorInfo.this
obtenir, et serait passé"PersonName"
et"Age"
. Donc, vous devez gérer à la fois les propriétés, mais pour l'instant, que vous ne manipulez que l'ancien.