2010-04-05 5 views
0

J'ai une grille de données et j'écris une méthode pour chercher à travers elle pour trouver du texte. Pratiquement toutes mes colonnes utilisent un DataTemplateSelector, donc dans ma recherche, je dois être capable de prendre un DataTemplate, de l'appliquer à un ContentControl, puis de trouver un TextBlock pour voir le texte s'il correspond à mes critères de recherche. J'essaie ce qui suit, mais cela ne semble pas donner de résultats. J'ai également essayé un FindName (contrôle "layoutRoot") mais qui est revenu aussi nul.Évaluer ContentControl sans le rendre à l'écran

var control = new ContentControl(); 
control.ContentTemplate = dataTemplate; 
control.Content = item; 

var txtBox = control.FindChildren<TextBlock>(); 

Répondre

0

Avez-vous essayé d'énumérer tous les enfants de GetChild VisualTreeHelper()/GetChildrenCount()?

En outre, je crois que vous pouvez définir le gestionnaire initialisé à partir de XAML sur un contrôle cible dans un DataTemplate et de là souscrire à l'événement Loaded (si nécessaire).

0

Je ne pense pas que vous allez sur ce problème dans le bon sens. Vous devriez obtenir vos éléments de recherche à partir d'une liste qui est, espérons-le, dans votre modèle. Et l'attribut selected de votre grille doit être lié à une propriété que vous pouvez définir sur l'élément que vous avez trouvé dans votre recherche. Faites-moi savoir si vous aimeriez que je vous explique cela avec des exemples de code.

+0

Je travaillais sur un cadre générique avec la grille, pour permettre une recherche dans la grille sur l'un des éléments. Puisque ce qui existe sur les éléments de la machine virtuelle peut être différent avec les convertisseurs appliqués et d'autres facteurs, la recherche via la machine virtuelle ne serait pas utile. – dariusriggins

Questions connexes