J'essaie d'ajouter par programme des événements et des éléments à un DataTemplate dans une application Silverlight 3.0. J'ai un contrôle d'utilisateur avec une propriété de dépendance où je voudrais prendre le modèle qui est défini, le modifier, puis définir la version modifiée à un contrôle interne. L'idée que je ai est de prendre le DataTemplate qui vient, lire son XAML, le modifier, puis utiliser le XamlReader pour créer un DataTemplate modifié qui peut ensuite être défini sur le contrôle interne. Le problème avec cette approche est que je ne sais pas comment obtenir le XAML à partir du modèle originalal Par exemple (s'il est encore possible.):Comment modifier un DataTemplate par programme?
protected virtual void OnItemTemplateChanged(DependencyPropertyChangedEventArgs e)
{
// Get the original Xaml from the set template
//string originalXaml = ???
// Modify the template
string newXaml = originalXaml.Replace("foo", "bar"); // for example
// Create a new template from the modified XAML
DataTemplate newTemplate = (DataTemplate)XamlReader.Load(newXaml);
// Update the inner template
this._childDropdown.ItemTemplate = newTemplate;
}
Est-ce que quelqu'un sait soit: 1) s'il y a un moyen de lire le XAML d'origine, ou 2) une autre approche pour modifier par programmation le DataTemplate.
Merci,
J'ai (à contrecoeur) retravaillé mon projet de sorte qu'il ne nécessite pas de manipulation du DataTemplate. Ce n'est pas ce que je voulais, mais au moins je ne perds plus de temps à essayer de faire ça. Merci, j'espère qu'une future version de Silverlight permettra une manipulation programmatique du DataTemplate. –
Je pense que ce que je voudrais voir comme la possibilité de remplacer un ItemContainerGenerator ItemsControl avec générateur personnalisé que nous ne pouvons pas pour le moment, je vais devoir chercher SL4 voir si cela permet cela. – AnthonyWJones