Comment puis-je élargir l'ensemble de l'arbre de Silverlight?
Edit: Voici le XAML: P>
<controls:TreeView x:Name="tv"> <controls:TreeView.ItemTemplate> <common:HierarchicalDataTemplate ItemsSource="{Binding Children}"> <CheckBox IsChecked="{Binding Visible, Mode=TwoWay}" Content="{Binding Name}"/> </common:HierarchicalDataTemplate> </controls:TreeView.ItemTemplate> </controls:TreeView>
7 Réponses :
yourtreeview.expandall ()
Vous pouvez également définir l'attribut arboresview isexpanded = "true" dans le xaml bien que je ne sois pas sûr si cela élargit l'arbre entier ou un seul niveau P> p>
EXPRESTALL code> n'est pas une méthode sur
TreeView code> dans Silverlight.
Je me réfère au contrôle Silverlight 3 Control System.Windows.Controls.TreeView Code> Dans le
System.Windows.Controls code> Assemblage. Cette classe n'a pas de méthode code> code>. Après un peu plus d'investigation, j'ai découvert que la boîte à outils Silverlight dispose d'une méthode d'extension code> code>, et c'est probablement cette méthode Itellisense reprend.
Développer tout est une méthode d'extension, mais cela ne fait rien pour que cela n'aide pas. Désolé :(
Vous devrez utiliser Treeview.itemcontainergénatagerenerateur code> pour obtenir les instances code> arbres et définir
isexpanded code> sur ceux-ci. Ceci est légèrement complexe car l'expansion est effectuée de manière asynchrone. Vous pouvez trouver des échantillons de code sur Internet ou simplement utiliser cette méthode d'extension:
Je continue à obtenir NULL sur Treeview.ItemContagerenerator.ContainerFromindex sur tous les indices .. Ne l'obtenez pas pourquoi ..
Je ne vois pas, que la question est répondue, car l'arbreviewItem est toujours NULL:
TreeViewItem item = treeView.ItemContainerGenerator.ContainerFromIndex(i) as TreeViewItem; if (item != null) ExpandAll(item);
Si le TreeView code> n'a pas été chargé, vous ne pouvez pas utiliser
EXTÉRENTALLY code> donc je suppose que vous appelez la méthode trop tôt. Ajoutez un gestionnaire pour le
Treeview.load \ / code> événement et appelez
EXTENIR code> là-bas. Une autre option est bien entendu appeler
updateLayout code>, mais je préfère l'autre approche.
Tout d'abord, lisez ce message: http://bea.stollnitz.com/blog/?p=55
Deuxièmement, Herit TreeViewItem and TreeView: p> troisième, liant la propriété de votre modèle à "isexpanded". P> p> p>
D'une perspective de SL4 de 2011, ce que je devais faire était de créer les spécialisations comme indiqué. Il fait déjà la liaison, alors troisième n'est pas nécessaire. Tout d'abord est seulement pour expliquer. La liaison à "isexpanded" dans un style implicite ne fonctionne pas pour moi et une exception concernant une propriété en lecture seule nommée ''. Allez comprendre...
Si vous souhaitez faire dans XAML, il peut être fait à l'aide de la ressource d'assemblage et de réglage de Silverlight Toolkit Toolkit. Le code est disponible ici: http://bea.stollnitz.com/blog/?p=54 < / p>
Ajoutez simplement cette ligne après avoir créé les articles TreeView.
c'est tout! p>
Je sais que c'est un peu tard, mais j'ai trouvé cela lors de la recherche d'une réponse et j'ai découvert que dans Silverlight 4, vous pouvez utiliser un thème implicite pour le faire:
<Style TargetType="sdk:TreeViewItem"> <Setter Property="IsExpanded" Value="True" /> </Style>