J'ai mais j'ai un Exception: p> exception interne: p> xaml: p> TreeView code> contrôle et je veux lier les nœuds d'arborese '
iSexpanded "/ code> propriété de mon
datasource code> éléments!
4 Réponses :
Le moyen le plus rapide est de sous-classer à la fois le malheureusement, vous perdrez le Thème par défaut du TreeView code> et le
TreeViewItem code>, par exemple:
Treeview code> lorsque vous faites le sous-classement. C'est une faiblesse du concept de thème Silverlight. Ainsi, vous pouvez alternativement utiliser une propriété personnalisée propriété attachée em> ou un comportement em> qui traverse l'arborescence et définit les liaisons de l'extérieur. Parce que les nœuds d'arbre sont créés de manière paresseusement à la demande, vous devez écouter l'événement code> code> > une fois pour chaque nœud qui n'a pas encore été rendu, puis définissez les liaisons dans ce gestionnaire d'événements pour chacun de ses enfants après avoir attendu le col de layouche. P> p>
Setbinding ne prend pas 1 argument!
@Evgeny Ooops, ma mauvaise ... édité la réponse à ajouter les arguments manquants à la méthode. Setbinding (...).
Je voulais juste souligner que cela est maintenant possible. J'utilise Silverlight 5, avec Silverlight Toolkit compilé contre SL5 et vous pouvez se lier à isexpandé. J'ai défini le style dans un endroit légèrement différent de toi. Voici mon XAML.
<controls:TreeView ItemsSource="{Binding Repository.MajorClasses}" ItemTemplate="{StaticResource TreeviewMajorClassTemplate}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}"> <controls:TreeView.Resources> <Style TargetType="controls:TreeViewItem"> <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" /> </Style> </controls:TreeView.Resources> </controls:TreeView>
Merci pour cette mise à jour, mais pour moi cela n'a pas fonctionné. Voir ma réponse ci-dessous.
Suivi de Malcom, je l'ai eu pour fonctionner à l'aide de l'élémentContainerStyle à la place de SL5.
<sdk:TreeView.ItemContainerStyle> <Style TargetType="sdk:TreeViewItem"> <Setter Property="IsExpanded" Value="True"/> <Setter Property="Visibility" Value="{Binding IsVisible, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}" /> </Style> </sdk:TreeView.ItemContainerStyle>
Si vous utilisez SL5, les SetTateurs XAML standard doivent fonctionner. Mais si vous utilisez SL4 ou ci-dessous, vous devrez utiliser settervaluebindinghelper code> de ici . Ensuite, votre XAML ressemblera à ce qui suit. Assurez-vous de copier soigneusement ce que j'ai ci-dessous.
<sdk:TreeView.ItemContainerStyle>
<Style TargetType="sdk:TreeViewItem">
<Setter Property="local:SetterValueBindingHelper.PropertyBinding">
<Setter.Value>
<local:SetterValueBindingHelper>
<local:SetterValueBindingHelper Property="IsSelected" Binding="{Binding Mode=TwoWay, Path=IsSelected}"/>
<local:SetterValueBindingHelper Property="IsExpanded" Binding="{Binding Mode=TwoWay, Path=IsExpanded}"/>
</local:SetterValueBindingHelper>
</Setter.Value>
</Setter>
</Style>
</sdk:TreeView.ItemContainerStyle>
Version de SDK et Toolkit? Qu'est-ce qui vous convaincre que cela a quelque chose à voir avec la propriété
isexpanded code>? Si vous supprimez le
itemontainerStyle code> l'exception disparaît-elle?
"Si vous enlevez l'élémentContainerStyle, l'exception disparaît-elle?" Oui! Exception partez! Toolkit: Microsoft.com/silverlight