2008-11-21 5 views
1

Est-il possible de manipuler l'arbre de contrôle d'une fenêtre WPF par programmation?Manipulation d'un arbre d'éléments WPF

J'ai une chaîne qui contient un code XAML WPF arbitraire. Je montre le contenu dans un contrôle de contenu. Aucun problème jusqu'à présent. En outre, je souhaite décorer chaque contrôle Grid contenu dans l'extrait XAML avec, disons, une bordure spéciale.

Quels sont les moyens possibles de le faire?

Répondre

0

Vous pouvez parcourir l'arborescence de contrôle et, si le contrôle actuel est de type Grille, ajouter votre bordure.

Voici quelques pseudo-code qui ressemble scandaleusement comme C# et peut effectivement compiler et travail:

private void AddGrid(Control c){ 
    foreach(var child in c.Children) 
    AddGrid(child); 
    if(this is Grid) 
    this.Border = new Border(/* whatever */); 
} 

Alternativement, dans les ressources du contrôle qui contient votre XAML dynamique, vous pouvez ajouter un style qui modifie l'apparence de toutes les grilles et ajoute la bordure que vous voulez autour de lui. This is a good resource for learning how to do this. N'oubliez pas que si vous ajoutez le style aux ressources de la fenêtre ou aux ressources de l'application, cela affectera tous les contrôles de votre fenêtre ou application, respectivement. L'ajouter au parent immédiat de la xaml dynamique affectera (jamais essayé ceci auparavant) seulement les modèles de son contrôle enfant.