en passant la fenêtre actuelle comme CommandParameter

voix
20

comment puis-je passer la fenêtre, je suis actuellement en tant que paramètre à une commande?

J'aime le faire en XAML balisage:

<Button Command=CommandGetsCalled CommandParameter=-this?- />
Créé 17/08/2010 à 16:47
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
53

Il y a deux façons que je peux penser de le faire: Donnez la fenêtre un nom (via un x:Nameattribut sur l' Windowétiquette, puis construire une fixation comme celui - ci (prend le nom de la fenêtre est « ThisWindow »):

<Button Command="CommandGetsCalled" CommandParameter="{Binding ElementName=ThisWindow}" />

Pour quelque chose de plus général (ne vous fiez pas à donner la fenêtre actuelle un nom), la liaison peut être construit comme ceci:

<Button Command="CommandGetsCalled" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" /> 
Créé 17/08/2010 à 17:17
source utilisateur

voix
18

Vous pouvez essayer de se lier à un RelativeSource

Si vous voulez passer le bouton comme paramètre:

<Button Command="CommandGetsCalled" 
        CommandParameter="{Binding RelativeSource={RelativeSource Self}}" />

Si vous voulez passer la fenêtre comme paramètre:

<Button Command="CommandGetsCalled" 
        CommandParameter="{Binding RelativeSource={
             RelativeSource AncestorType={x:Type Window}}}" />
Créé 17/08/2010 à 17:17
source utilisateur

voix
2

Dans ma situation aucune des réponses fournies a travaillé.

Cela a fonctionné pour moi:

<window x:Name="myWindow">
 <Button Command="Command" CommandParameter={x:Reference Name=myWindow}/>
</window>
Créé 20/12/2017 à 17:52
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more