2009-08-04 7 views
3

J'ai une application WPVM MVF. Dans la vue, j'ai un multiselect ListBox. Dans le ViewModel, j'ai une propriété pour les éléments sélectionnés dans la liste.WPF ListBox + Binding + IDataErrorInfo =?

En utilisant une technique similaire à celle de la réponse à la question this, je peux lier ma propriété au ListBox.

Mais je veux aussi faire la validation des données via IDataErrorInfo. Tout ce que je veux faire est de vérifier que l'utilisateur a sélectionné au moins un élément dans la liste. L'ajout de ValidatesOnDataErrors=True à la liaison ne fonctionne pas.

Existe-t-il un moyen d'avoir une zone de liste multisélect qui est databound avec IDataErrorInfo?

+0

Pouvez-vous poster votre code? Définir "ne fonctionne pas"? Avez-vous une erreur? L'imlementation de IDataErrorInfo est-elle appelée? –

Répondre

-1

Même il est ListBox multiselect vous pouvez lier SelectedItem

SelectedItem="{Binding FakeSelectedItem, ValidatesOnDataErrors=True}" 

puis effectuez une validation lorsque ce change de propriété.

PS
Pour la liaison J'utilise cette solution MVVM Multiselect Listbox

0

Si vous utilisez un comportement pour la liaison Liste des ViewModel avec les éléments sélectionnés de ListBox, mettre à jour manuellement la liaison ajouter après/retirer l'article (s):

var binding = BindingOperations.GetBindingExpression(this, SelectedItemsListBoxBehavior.SelectedItemsProperty); 
if (binding != null)binding.UpdateSource(); 
+0

binding.ValidateWhithoutUpdate() est disponible mais ne semble pas faire le travail. – Fanch