8
votes

Développer Tree TreeView en Silverlight

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>


0 commentaires

7 Réponses :


1
votes

yourtreeview.expandall ()

EDIT : Martin a indiqué que la méthode EXTERTALL () n'existe pas pour TreeView, cependant, je viens de taper le code suivant dans mon projet Silverlight et Intellisense ramassé : xxx

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


3 commentaires

EXPRESTALL n'est pas une méthode sur TreeView dans Silverlight.


Je me réfère au contrôle Silverlight 3 Control System.Windows.Controls.TreeView Dans le System.Windows.Controls Assemblage. Cette classe n'a pas de méthode . Après un peu plus d'investigation, j'ai découvert que la boîte à outils Silverlight dispose d'une méthode d'extension , 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é :(



4
votes

Vous devrez utiliser Treeview.itemcontainergénatagerenerateur pour obtenir les instances arbres et définir isexpanded 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: xxx


1 commentaires

Je continue à obtenir NULL sur Treeview.ItemContagerenerator.ContainerFromindex sur tous les indices .. Ne l'obtenez pas pourquoi ..



0
votes

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);


1 commentaires

Si le TreeView n'a pas été chargé, vous ne pouvez pas utiliser EXTÉRENTALLY 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 là-bas. Une autre option est bien entendu appeler updateLayout , mais je préfère l'autre approche.



9
votes

Tout d'abord, lisez ce message: http://bea.stollnitz.com/blog/?p=55

Deuxièmement, Herit TreeViewItem and TreeView: xxx

troisième, liant la propriété de votre modèle à "isexpanded".


1 commentaires

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...



0
votes

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>


0 commentaires

3
votes

arbreviewmenu.dispatcher.begininvoke ((() => arbresviewmenu.expandall ());

Ajoutez simplement cette ligne après avoir créé les articles TreeView. c'est tout!


0 commentaires

18
votes

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>


0 commentaires