Bonjour,
Est-t-il possible de forcer le type d'un SelectedItem de façon à récupérer également les attributs en plus des propriétés de l'objet retourné par SelectedItem ?
J'ai créé un CustomControl MaTextBox qui hérite de TextBox. Lorsque la propriété Text est bindée, un label contenant le libellé de la propriété est automatiquement ajouté devant la TextBox. Ce libellé est défini dans un Attribut personnalisé de ma propriété. Jusque ici tout le monde suit ? Besoin d'un petit exemple ? Prenons donc le cas simplissime de la "personne" :
Lorsque je défini mon Binding en XAML :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public class Personne { <div style="margin-left:40px"> string _Nom; string _Prenom; [MonAttribut(Libelle="Nom de la personne :", Nullable=False)] public string Nom { <div style="margin-left:40px"> Get { return _Nom; } Set { _Nom = value; }</div>} [MonAttribut(Libelle="Prénom de la personne :")] public string Prenom { <div style="margin-left:40px"> Get { return _Prenom; } Set { _Prenom = value; }</div>}</div>}
J'obtient une jolie TextBox précédée d'un lable "Nom de la Personne :" (ainsi qu'un astérix caractérisant le fait que cette donnée ne soit pas nullable contrairement à Prenom mais là n'est pas le sujet...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 // PersonneDS est ODP <MaTextBox Text="{Binding Path=Nom, Source={StaticResource PersonneDS}}"/>)
Si maintenant je remplie une ListView avec une ObservableCollection<Personne> et que je définie une zone de saisie, permettant la modification des propriétés, bindée sur le SelectedItem, je n'arrive plus à récupérer mes Attributs :
Peut-on signifier dans le Binding qu'il s'agit d'un type "Personne" et non "Object" (ce que renvoie SelectedItem) ? Faire une sorte de CAST ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 // PersonneCollectionDS est ODP <ListView x:Name="listePersonne" ItemsSource="{Binding PersonneCollectionDS}" ... /> <MaTextBox Text="{Binding Path=SelectedItem.Nom, ElementName=listePersonne}"/>
Ou faut-il que je revois mon approche ?
Merci à ceux qui aurons pris le temps de me lire.![]()
Partager