2009-12-16 6 views
0

J'essaye de construire un contrôle personnalisé que je veux exister en tant qu'élément racine de mon xaml.Silverlight CustomControl Element racine

J'ai actuellement

  1. le modèle de generic.xaml triée.
  2. Un nouveau modèle dans le dossier de fusion qui me permettra de faire un nouveau 'DaveControl'
  3. La possibilité de mélanger pour ajouter du contenu qui apparaîtra dans le contentpresenter.

Cependant, si je l'exécute, le contenu disparaît. Il reste si j'ajoute le contrôle à un usercontrol, mais je ne veux pas que ça arrive. alors je ne serai pas capable d'appeler des méthodes de base puisque UserControl hérite de Control et le g.cs se plaindra toujours.

J'ai besoin de la classe dans le codebehind pour avoir une implémentation sur laquelle je peux surcharger une méthode de sauvegarde. Donc le codebehind dérive d'une classe que j'ai écrite.

Effectivement, je veux juste dire New Dave contrôle, allez au code derrière et écrire une méthode, « public override sauver »

Est-ce possible?

+0

Pouvez-vous ajouter un extrait de code pour illustrer votre problème? –

Répondre

0

Ok, il y a beaucoup de petites choses à gérer lorsque vous essayez de le faire.

Si vous ne voulez pas courir dans des conditions de course et d'objets erreurs ne se trouvent pas dans le mélange, modifier l'ordre du modèle est appliqué.

A l'intérieur du constructeur de votre classe personnalisée, appelez

this.ApplyTemplate(); 

Lire ce grand aperçu de voir pourquoi:

http://pagebrooks.com/archive/2008/11/30/tweaking-onapplytemplate-event-timing-in-silverlight-2.aspx

Ensuite, assurez-vous que vous avez l'attribut x: Class sur votre nouvelle contrôle. Cela signifie que vous obtenez du code généré à partir de votre xaml, qui nomme tous les attributs et analyse correctement votre xaml.