Question

J'ai des objets personnalisés qui mettent en œuvre INotifyProperyChanged et maintenant je me demande s'il est possible de mettre en œuvre supprimer douce qui joue bien avec une liaison? Chaque objet aurait une propriété IsDeleted et si cette propriété est définie sur true qu'il ne serait pas affiché dans l'interface graphique. Je pensais à faire une extension de balisage personnalisé qui décorer classe Binding mais il n'a pas fonctionné comme prévu. Maintenant, j'envisage d'utiliser MultiBinding avec IsDeleted comme l'une des propriétés liées de telle sorte que le convertisseur serait en mesure de déterminer quel objet est supprimé. Mais cette solution semble assez compliqué et ennuyeux.

Quelqu'un at-il une idée de comment mettre en œuvre pour la liaison souple supprime?

Était-ce utile?

La solution

Vous pouvez lier la visibilité de la propriété du UIElement à la propriété IsDeleted de votre objet, pour masquer ou afficher les éléments.

À titre d'exemple j'utiliser un TextBlock. En XAML vous pouvez écrire

<TextBlock Text="IsDeleted" Visibility={Binding IsDeleted}/>

NOTE: Dans l'exemple ci-dessus, le TextBlock est visible, quand IsDeleted est vrai. Je définirais un bien positif, comme sur l'objet Exists. Donc, vous ne devez pas nier le booléen ou de construire votre propre convertisseur.

WPF a un convertisseur qui convertit Buildin booléen à une valeur d'énumération de visibilité.

Autres conseils

Une autre façon de mettre en œuvre des suppressions douces est en maintenant et en exposant une collection contenant uniquement les éléments qui n'ont pas été supprimés dans votre modèle de vue, en plus de la collection de tous les éléments. Cela a (à mon avis) très grand mérite que ce n'est pas quelque chose que votre vue a besoin de penser à tout.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top