我試圖以編程的事件和元素添加到一個DataTemplate在Silverlight 3.0的應用程序。我有一個帶有依賴項屬性的用戶控件,我想在其中設置模板,調整它,然後將修改後的版本設置爲內部控件。如何以編程方式修改DataTemplate?
我的想法是採取進來的DataTemplate,讀取其XAML,調整它,然後使用XamlReader創建一個修改後的DataTemplate,然後可以設置爲內部控制。這種方法的問題是我不知道如何從originalal模板獲得XAML例如(如果它甚至有可能):
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進行一些編程操作。 – 2009-12-15 16:56:30
我想我希望看到能夠用自定義生成器替換ItemsControl ItemContainerGenerator,而我們現在不能使用它,所以我將不得不查看SL4,看看它是否允許。 – AnthonyWJones 2009-12-15 17:46:33