2010-01-29 26 views
1

je le XAML suivant:MultiDataTrigger Reliure à la collecte et à une propriété dans la collection

<Style.Triggers> 

    <MultiDataTrigger> 
    <MultiDataTrigger.Conditions> 
     <Condition Binding="{Binding Path=Errors, Converter={StaticResource ErrorsCountConverter}}"> 
     <Condition.Value>True</Condition.Value> 
     </Condition> 
     <Condition Binding="{Binding Path=Errors[0].HasError}" Value="True" /> 
    </MultiDataTrigger.Conditions> 
    <Setter Property="Background" Value="Red" /> 
    </MultiDataTrigger> 

</Style.Triggers> 

erreurs est un ObservableCollection<BrokenRule>. Le BrokenRule a une propriété appelée HasError. Maintenant, je veux lier à cette propriété HasError, mais je ne sais pas comment le référencer en XAML.

+0

Votre XAML semble correct: vous pouvez utiliser la syntaxe de l'indexeur pour obtenir la première BrokenRule de la collection, puis .HasError vous amènera à la propriété HasError de cette BrokenRule. Quel est le problème que vous voyez? Quelles erreurs de liaison de données voyez-vous dans la fenêtre Sortie? – itowlson

+0

La collection Errors inclut les règles rompues pour l'ensemble ViewModel. Pouvez-vous expliquer la syntaxe de l'indexeur. J'ai utilisé. [0] .HasError mais alors il n'affichait rien. – azamsharp

+0

BTW Je ne vois aucune erreur. Les erreurs est une liste qui contient les règles brisées pour l'ensemble du modèle de vue. – azamsharp

Répondre

2

Il existe une syntaxe de barre oblique relativement inconnue pour accéder à l'élément actuel d'une collection. donc si vous voulez lier à l'élément actuel d'une source de données vous utiliserez "{Binding Path=/}" puisque vous semblez vouloir augmenter automatiquement votre collection d'Erreurs et avoir HasError répondre en conséquence, vous devriez pouvoir utiliser quelque chose comme "{Binding Path=Errors/HasError}" pour obtenir les HasErrors propriété de l'élément actuel dans Errors.

Espérons que ça aide!