27 votes

Création d'un DataTemplate Silverlight dans le code

Comment créer un modèle de données Silverlight dans le code? J'ai vu de nombreux exemples pour WPF, mais rien pour Silverlight.

Edit: Voici le code que j'utilise maintenant pour cela, basé sur la réponse de Santiago ci-dessous.

 public DataTemplate Create(Type type)
{
  return (DataTemplate)XamlReader.Load(
          @"<DataTemplate
            xmlns=""http://schemas.microsoft.com/client/2007"">
            <" + type.Name + @" Text=""{Binding " + ShowColumn + @"}""/>
            </DataTemplate>"
   );
}
 

Cela fonctionne très bien et me permet de changer la reliure à la volée.

4voto

Davut Gürbüz Points 1609

Oui, Silverligt 4 de plus que WPF versions actuelles. Lorsque vous ajoutez un modèle comme une ressource, c'est à dire comme je l'ai fait J'ai ajouté un Modèle userControl dans l'Application.xaml MergedResources entre ResourceDictionary. En XAML si la balise de mise en œuvre IDictionary vous pourriez utilisateur x:attribut Clé. Comme ça

   <ResourceDictionary>
    <DataTemplate x:Key="TextBoxEditTemplate">
    <Some user control x:Name="myOwnControl" />
    </DataTemplate>
   </ResourceDictionary>

Ok! Vous pouvez joindre votre modèle de codage, de l'Application.Actuel.ressources["TextBoxEditTemplate"] d'autre part, certaines méthodes pour trouver les membres de ce modèle ne fonctionnera pas. À côté de cette DataTemplate ne pas mettre en œuvre IDictionary de sorte que vous ne pouvez pas affecter x:attribut de Clé pour les éléments de ce dataTemplate. comme myOwnControl dans l'exemple.

Sans xaml actuel silverlight a quelques restrictions sur la création dynamique de code-behind DataTemplates.Même s'il travaille sur WPF.

De toute façon la meilleure solution en ce point est la création de XAML script pour datatemplate ,Vous pouvez assing certaines valeurs de l'élément dans le DataTemplate script. Nous avons créé notre propre usercontrols a certaines propriétés avec DependencyObjectProperty...

Enfin, si votre objet n'est pas en hérite ,c'est à dire pas un MyControl:UserControl, vous pouvez hériter d' Monobjet:DependencyObject par cette façon, vous pouvez atteindre votre objet en appelant comme Application.Actuel.Les ressources.FirstChilderen...

FindName ne fonctionne qu'en WPF

2voto

jarda Points 46

citation de MSDN :

L'utilisation XAML qui définit le contenu pour la création d'un modèle de données n'est pas exposée en tant que propriété configurable. Il s'agit d'un comportement spécial intégré au traitement XAML d'un élément d'objet DataTemplate.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X