Frage

Ich habe ein Silverlight Usercontrol, das das ContentPropertyAttribute verwendet, um das Eigentum von Kindern eines seiner Kinderpaneele zu enthüllen. Auf diese Weise kann ich dem Panel auf meiner Seite untergeordnete Steuerelemente hinzufügen:

<local:MyUserControl>
    <TextBox Name="tbTest" />
</local:MyUserControl>

Dies funktioniert, abgesehen von dem "Tbtest" -Feld der vorhandenen Seite, aber nicht initialisiert. Bei näherer Betrachtung versucht die InitializeComponent -Methode, die Textbox (mit FindName) zu lokalisieren, dies jedoch nicht (Rückgabe -Null).

Nach einigen Untersuchungen habe ich festgestellt, dass NamensCopes das Problem sind - das UserControl hat seinen eigenen Namescope, sodass die Kinder nicht mit dem FindName der Seite gefunden werden können, aber mit der FindName -Methode der UserControl.

Wie kann ich meine Usercontrol so ändern, dass die Kinderkontrollen nach der InitializeComponent -Methode lokalisiert werden? Die Standardpaneele (Stackpanel, Gitter usw.) scheinen kein Problem damit zu haben, also muss es eine Lösung geben?

Vielen Dank

War es hilfreich?

Lösung

An dieser Stelle mag es schwierig sein, es zu tun, aber die beste Vorgehensweise wäre wahrscheinlich, Ihre Kontrolle von itemsControl anstelle von UserControl abzuleiten. Dann hätten Sie nicht das Problem mit Namenszildern.

Ich nehme an, als Problemumgehung könnte man mit VisualTreehelper eintauchen, um das Tbtest -Feld manuell einzustellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top