Я пытаюсь программно добавить события и элементы в DataTemplate в приложении Silverlight 3.0. У меня есть User Control с свойством dependency, где я хотел бы взять шаблон, который установлен, настроить его, а затем установить измененную версию на внутренний элемент управления.Как программно изменить DataTemplate?
Идея, которую я имею, заключается в том, чтобы взять DataTemplate, который входит, прочитать его XAML, настроить его, а затем использовать XamlReader для создания измененного DataTemplate, который затем может быть установлен на внутренний элемент управления. Проблема с этим подходом, я не знаю, как получить код XAML от originalal шаблона Например (если это вообще возможно.):
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;
}
знает кто-либо: 1) если есть способ читать исходный XAML или 2) другой подход к программному изменению DataTemplate.
Спасибо,
Я (неохотно) переработал свой проект, чтобы он не нуждался в манипуляции с DataTemplate. Это не то, что я хотел, но по крайней мере я больше не трачу время на это. Спасибо, надеюсь, что будущая версия Silverlight допускает некоторые программные манипуляции с DataTemplate. –
Я думаю, что я хотел бы видеть как возможность заменить ItemControl ItemContainerGenerator на пользовательский генератор, которого мы не можем на данный момент, мне придется искать SL4, если это разрешено. – AnthonyWJones