4 Stimmen

Gibt es einen Workaround für die fehlende FindName-Methode im DataTemplate von Silverlight?

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?

3voto

MojoFilter Punkte 11949

Wenn der Rahmen innerhalb eines DataTemplate, nicht ein ControlTemplate ist, dann ist der einzige Weg, den ich in der Vergangenheit tun konnte, VisualTreeHelper zu verwenden, um das Element, das ich brauche zu lokalisieren.

0voto

Bryant Punkte 8670

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X