Sto cercando di aggiungere eventi ed elementi a un DataTemplate in modo programmatico in un'applicazione Silverlight 3.0. Ho un controllo utente con una proprietà di dipendenza in cui vorrei prendere il modello impostato, modificarlo e quindi impostare la versione modificata su un controllo interno.Come modificare un DataTemplate al livello di programmazione?
L'idea che ho è prendere il DataTemplate che viene fornito, leggere il suo XAML, modificarlo e quindi usare XamlReader per creare un DataTemplate modificato che può quindi essere impostato sul controllo interno. Il problema con questo approccio è che non so come ottenere il XAML dal modello originalal Per esempio (se è ancora possibile.):
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;
}
Qualcuno sa sia: 1) se c'è un modo per leggere l'originale XAML o 2) un altro approccio per modificare a livello di codice il DataTemplate.
Grazie,
I (a malincuore) ha rielaborato il mio progetto in modo che non richieda la manipolazione del DataTemplate. Non è quello che volevo ma almeno non sto perdendo altro tempo cercando di farlo. Grazie, spero che una versione futura di Silverlight consenta alcune manipolazioni programmatiche del DataTemplate. –
Penso a quello che mi piacerebbe vedere come la possibilità di sostituire un ItemContainerGenerator ItemsControl con un generatore personalizzato che non possiamo al momento, dovrò cercare SL4 per vedere se lo consente. – AnthonyWJones