2010-11-14 21 views
0

J'essaye de lier la commande d'un bouton à l'intérieur d'un datacontext à un RelayCommand dans le mode de vue principal. Quand j'utilise Blend, il change le datacontext de la grille contenant pour pointer vers le Main ViewModel, brisant ainsi la liaison du contenu de la grille qui devrait être basé sur le viewmodel de la ligne etc. J'ai essayé ce qui suit mais le compilateur dit que je suis manque un nom d'attribut.Commande de lien de liaison à la source autre que le datacontext parent

<Button Style="{StaticResource StatusButtonStyle}"> 
        <Button.Command> 
         <Binding Source="{StaticResource Locator" Path="{Main.ViewStatusCommand}" Mode="OneWay"     
        </Button.Command> 
        <i:Interaction.Triggers> 
         <i:EventTrigger EventName="Click"> 
          <i:InvokeCommandAction/> 
         </i:EventTrigger> 
        </i:Interaction.Triggers> 
       </Button> 

J'ai aussi essayé ceci:

<Button Style="{StaticResource StatusButtonStyle}" Command="{Binding Main.ViewStatusCommand, Source=StaticResource Locator}"> 

Mais cela ne fonctionne pas non plus. Si je ne suis pas autorisé à définir la source de la commande, quelqu'un pourrait-il expliquer pourquoi? Merci.

Répondre

1

Vous avez oublié quelques crochets dans le deuxième exemple (et le premier manque un /> dans l'élément de fixation)

<Button Style={StaticResource StatusButtonStyle}" Command="{Binding Main.ViewStatusCommand, Source={StaticResource Locator}}"> 

Est-ce la raison pour expliquer pourquoi il ne fonctionne pas? Si ce n'est pas le cas, pourriez-vous décrire vos symptômes (rien ne se passe lorsque j'appuie sur le bouton, Exception (si c'est le cas, quand et quelle exception?))

Si rien ne se passe lorsque vous poussez le bouton, regardez la console de débogage pour récupérer les erreurs de liaisons.

+0

C'est fait. Je vous remercie! Je me sens vraiment stupide maintenant. Pouvez-vous expliquer pourquoi parfois vous avez besoin des crochets et parfois vous le faites? Ou au moins pointez-moi dans la bonne direction. Ma deuxième tentative n'a pas jeté d'erreurs et je sais que par elle-même il y aurait des parenthèses autour de staticResource mais pas imbriquées comme ça. – Ben