dans mon application Silverlight 4, j'ai une classe myClass
qui contient une liste de element
s. Ce element
a un attribut name
qui les identifie.Assurer des éléments uniques dans la liste avec Silverlight Databinding
class element
{
string Name { get; set; }
}
class myClass
{
List<element> elements { get; }
}
Pour afficher la liste des éléments, je Databind myClass.elements
à Silverlight Listbox:
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<TextBox Text="{Binding Name, FallbackValue=[None], Mode=TwoWay,
NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
...
De cette façon, les modifications du Name
du element
est automatiquement propagée en arrière. Mais: je dois vous assurer que le Name
est unique dans myClass.elements
(et quelques autres contraintes, en fonction des propriétés de myClass
Naturellement, les éléments ne sait pas qui le contient (et il ne doit pas savoir,. Je pense.) Donc mon problème est: Comment puis-je vérifier les contraintes des éléments (dans le setter de la propriété Name)? Je voudrais vraiment utiliser le Silverlight-Databinding, car il implémente déjà la notification d'erreur
Merci à l'avance,
Frank
Une question, que voulez-vous que l'application fasse si l'utilisateur tente d'entrer un doublon? Vous pouvez essayer que l'élément setter déclenche un événement auquel la classe conteneur est abonnée pour valider l'élément. – EtherDragon
L'application ne doit pas enregistrer la valeur et la zone de texte doit afficher une erreur (via NotifyOnValidationError et ValidatesOnExceptions), donc je suppose que le setter aurait besoin d'augmenter l'erreur. Lorsque je lève un événement dans le setter, je ne peux plus réagir dans le setter au résultat de la validation (ne pas définir la propriété, en augmentant l'erreur), n'est-ce pas? – Aaginor