Laut dem C#-Compiler und der Silverlight 2-Dokumentation bietet Silverlight keine FindName-Methode für die DataTemplate-Klasse. Ich möchte einen Rahmen finden, der sich innerhalb eines ContentPresenters befindet. Was ist der beste Weg in SilverLight 2?
Antworten
Zu viele Anzeigen?Ich bin mir nicht ganz sicher, ob ich das Szenario verstehe, aber da Sie das DataTemplate erwähnen, gehe ich davon aus, dass Sie eine Vorlage verwenden.
Wenn Sie eine Vorlage verwenden, geben Sie dem Rahmen einen Namen (x:Name="border") und überschreiben dann die Methode OnApplyTemplate. In dieser Methode verwenden Sie GetTemplateChild und übergeben den von Ihnen verwendeten Namen. Dadurch wird ein Verweis auf den Rahmen zurückgegeben.
Wenn Sie keine Vorlage verwenden und einen Verweis auf den ContentPresenter haben, können Sie eine rekursive Funktion schreiben, die die Eigenschaft "Content" des untergeordneten Objekts untersucht und, wenn es sich nicht um einen Rahmen handelt, dieselbe Funktion für den Inhalt aufruft.