Ich versuche, Ereignisse und Elemente zu einer DataTemplate in einer Silverlight 3.0 App programmgesteuert hinzuzufügen. Ich habe ein Benutzersteuerelement mit einer Abhängigkeitseigenschaft, in der ich die eingestellte Vorlage übernehmen, optimieren und dann die modifizierte Version als inneres Steuerelement festlegen möchte.Wie programmiere ich ein DataTemplate?
Die Idee, die ich habe, ist, das DataTemplate zu nehmen, lesen Sie seine XAML, zwicken Sie es und verwenden Sie dann den XamlReader, um eine modifizierte DataTemplate zu erstellen, die dann auf das innere Steuerelement gesetzt werden kann. Das Problem bei diesem Ansatz ist, ich weiß nicht, wie die XAML aus der originalal Vorlage erhalten zum Beispiel (wenn es überhaupt möglich ist.):
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;
}
Kennt jemand entweder: 1), wenn es eine Möglichkeit gibt, zu lesen das ursprüngliche XAML oder 2) eine andere Methode, das DataTemplate programmgesteuert zu ändern.
Danke,
Ich (widerwillig) überarbeitet mein Projekt, so dass es keine Manipulation des DataTemplate erfordert. Es ist nicht das, was ich wollte, aber zumindest verschwende ich keine Zeit mehr, um das zu versuchen. Danke, ich hoffe, dass eine zukünftige Version von Silverlight eine programmatische Manipulation des DataTemplate erlaubt. –
Ich denke, was ich als die Fähigkeit sehen möchte, einen ItemsControl ItemContainerGenerator durch einen benutzerdefinierten Generator zu ersetzen, was wir im Moment nicht können, muss ich SL4 nachsehen, ob es das erlaubt. – AnthonyWJones