2010-08-24 6 views
0

Dans le code XAML suivant, comment puis-je utiliser _xyzStackPanel dans le code derrière? N'est-ce pas possible lorsque nous utilisons DataTemplate? J'ai besoin de montrer/cacher ce stackpanel, quelle est la meilleure façon? Puis-je utiliser ici le VisualStateManagerSilverlight DataTemplate "Nom", comment utiliser dans codebehind?

? Quelqu'un pourrait-il donner un exemple s'il vous plaît, merci.

<ListBox ... > 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Name="_xyzStackPanel" ...> 
      .............. 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

Merci,

Voodoo

EDIT:

Je me demande s'il serait préférable d'ajouter le StackPanel dans le codebehind au lieu d'avoir toujours là et cacher ... ... MAIS, comment puis-je ajouter au DataTemplate dans le codebehind?

Répondre

1

Liez la visibilité de StackPanel à l'objet ViewModel qu'elle représente et basculez-la à la place. Vous utilisez MVVM, non?

+0

Non Je n'utilise pas MVVM. – VoodooChild

+0

+1, j'ai fini par lier la visibilité à une propriété fictive de mon objet ... Merci! J'ai été cependant surpris de découvrir que "Nom" des UIElements ne sont pas disponibles une fois dans un DataTemplate .... Je me demande pourquoi? – VoodooChild

+1

@VoodooChild Quel StackPanel des n éléments de la liste se référerait-il? N'oubliez pas qu'il crée une instance de DataTemplate par élément dans la zone de liste. L'accès direct à l'objet est donc ambigu. Le nom n'a de sens que dans le contexte de DataTemplate et DataTemplate n'a pas de code-behind. –

Questions connexes