Estoy tratando de agregar eventos y elementos mediante programación a un DataTemplate en una aplicación Silverlight 3.0. Tengo un Control de usuario con una propiedad de dependencia en el que me gustaría tomar la plantilla establecida, modificarla y luego configurar la versión modificada para que sea un control interno.¿Cómo modificar programáticamente una plantilla de datos?
La idea que tengo es tomar el DataTemplate que viene, leer su XAML, ajustarlo y luego usar el XamlReader para crear un DataTemplate modificado que luego se puede establecer en el control interno. El problema con este enfoque es que no sabe cómo conseguir el XAML de la plantilla originalal Por ejemplo (si es aún posible.):
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;
}
¿Alguien sabe ya sea: 1) si hay una manera de leer el XAML original, o 2) otro enfoque para modificar programáticamente el DataTemplate.
Gracias,
I (a regañadientes) reelaborado mi proyecto para que no requiera la manipulación del DataTemplate. No es lo que quería, pero al menos no estoy perdiendo más tiempo tratando de hacer esto. Gracias, espero que una versión futura de Silverlight permita cierta manipulación programática de DataTemplate. –
Creo que lo que me gustaría ver es la capacidad de reemplazar un ItemControl ItemContainerGenerator con un generador personalizado que no podemos por el momento, tendré que buscar SL4 para ver si lo permite. – AnthonyWJones