Ich habe ein Silverlight UserControl, das das ContentPropertyAttribute verwendet, um die Children-Eigenschaft eines seiner Child-Panels freizugeben. Dies ermöglicht mir, dem Panel auf meiner Seite untergeordnete Steuerelemente hinzuzufügen:
<local:MyUserControl>
<TextBox Name="tbTest" />
</local:MyUserControl>
Dies funktioniert, abgesehen davon, dass das Feld "tbTest" auf der Seite zwar vorhanden, aber nicht initialisiert ist. Bei näherer Betrachtung versucht die InitializeComponent-Methode, die TextBox (mit FindName) zu finden, was aber nicht gelingt (sie gibt null zurück).
Nach einigen Untersuchungen habe ich herausgefunden, dass Namescopes das Problem sind - das UserControl hat einen eigenen Namescope, so dass seine Kinder nicht mit der FindName-Methode der Seite, sondern mit der FindName-Methode des UserControls gefunden werden können.
Wie kann ich mein UserControl so ändern, dass die untergeordneten Steuerelemente durch die InitializeComponent-Methode auffindbar sind? Die Standard-Panels (StackPanel, Grid, etc.) scheinen damit kein Problem zu haben, also muss es eine Lösung geben?
Merci