Je n'ai pas été en mesure de trouver une solution propre au problème suivant, même s'il y a déjà quelques questions connexes sur SO.Access Element à l'intérieur de Silverlight DataTemplate
Si j'ai un modèle de données qui est utilisé plusieurs fois, par exemple, un TreeViewItem.HeaderTemplate, comment puis-je modifier quelque chose le modèle pour seulement certains TreeViewItems.
Par exemple, disons que mon HeaderTemplate a une TVI textblock et en fonction de la chaîne, je veux faire le fontweight gras.
Je veux faire quelque chose comme ceci:
((TextBlock)myTreeView.Items.ElementAt(0).FindName("myTextBlock")).FontWeight = FontWeights.Bold;
Quelqu'un at-il une solution pour cela? -> Merci Evan
Modifier: Est-il possible d'écrire une fonction générique pour obtenir un contrôle basé sur son nom même s'il se trouve dans un modèle de données?
LayoutRoot.FindName("myTextBlock");
fonctionnerait si myTextBlock était pas dans un DataTemplate. Comment puis-je écrire une fonction findElementInDataTemplate(string elementName, string parentName)
?
La raison pour laquelle la réponse de Evan est pas ce que je suis à la recherche est parce que je développe un contrôle. Je veux que le développeur de l'application qui utilise mon contrôle puisse changer n'importe quel élément du contrôle. Si j'utilise la solution d'Evan, cela nécessiterait que le développeur de l'application ait accès à tous les modèles du contrôle. Possible, mais pas idéal. Merci!
Si vous avez utilisé un DataTemplate qui contient un contrôle appelé « myTextBlock » plusieurs fois et ont une sorte de 'LayoutRoot.FindName ("myTextBlock") 'opération, lequel des nombreux contrôles appelés" myTextBlock "voudriez-vous que cette opération retourne? – AnthonyWJones
@AnthonyWJones Bon point, modifié pour inclure un paramètre parentName. – NickHalden
@AnthonyWJones: Normalement, deux contrôles avec nom ne sont pas possibles. Si vous conservez deux contrôles de même nom dans le modèle, le modèle est considéré comme incorrect. – Mahantesh