2009-11-20 4 views
1

Je crée un Adorner de chargement qui a une icône tourbillonnant dessus. J'ai essayé de lier la propriété de visibilité directement dans le XAML mais cela cache tout ce qui se trouve dans sa hiérarchie.WPF Adorner Visibilité Liaison de données par programme

J'ai dans mon XAML:

<AdornerDecorator Visibility="{Binding Path=RootGroup.Loading, Converter={StaticResource VisibilityConverter}}"> 
    <TreeView x:Name="groupTreeView" /> 
</AdornerDecorator> 

et dans mon constructeur

LoadingAdorner adorner = new LoadingAdorner(groupTreeView); 
AdornerLayer.GetAdornerLayer(groupTreeView).Add(adorner); 

C'est veux pas que je voulais si je l'ai essayé de lier le code à la place:

LoadingAdorner adorner = new LoadingAdorner(groupTreeView); 
Binding bind = new Binding("RootGroup.Loading"); 
bind.Source = this.DataContext; 
bind.Converter = new VisibilityConverter(); 
adorner.SetBinding(LoadingAdorner.VisibilityProperty, bind); 
AdornerLayer.GetAdornerLayer(groupTreeView).Add(adorner); 

Cela fonctionnera si le DataContext n'est pas nul car il peut réellement trouver RootGroup.Loading. Mais si elle est nulle alors la liaison n'a aucune source à regarder.

Alors je me demandais qu'est-ce que la liaison de données XAML utilise comme .Source? La liaison directement dans le fichier XAML se lie à la propriété correcte, mais n'obtient pas le même résultat. Donc, je me demande juste ce que je devrais mettre mon .Source à Donc je peux lier à RootGroup.Loading?

Merci, Raul

Répondre

2

Cela ne répond pas directement à votre question, mais pourquoi utilisez-vous un Adorner pour obtenir l'effet d'animation de chargement.

Pourquoi ne pas simplement utiliser un élément de frontière qui est un frère de votre TreeView qui est commande Z-dessus, puis faites votre animation cela.

Alors vous faites quelque chose comme ça

<Grid>  
    <TreeView /> 
    <Border x:Name="myBorder">... </Border>  
</Grid> 

Ensuite, vous pouvez faire vos obligatoire dans XAML sans cacher tout l'arbre visuel.

+0

Bien comme vous l'avez dit, il ne répond pas directement à la question ... mais votre approche est meilleure quand je faisais ce que je faisais. Merci beaucoup! – HaxElit