В статически типизированном языке каждое имя переменной привязано как 1. к типу (во время компиляции с помощью объявления данных). 2. к объекту. Связывание с объектом необязательно - если имя не привязано к объекту, имя считается нулевым. На динамически типизированном языке каждое имя переменной (если оно не равно null) связано только с объектом.
Имена привязаны к объектам во время выполнения с помощью операторов присваивания, и можно связать имя к объектам разных типов во время выполнения программы.
Хотя Вы не можете программно создать его, можно загрузиться, это от XAML представляет в виде строки в коде как это:
public static DataTemplate Create(Type type)
{
return (DataTemplate) XamlReader.Load(
@"<DataTemplate
xmlns=""http://schemas.microsoft.com/client/2007"">
<" + type.Name + @"/>
</DataTemplate>"
);
}
отрывок выше создает шаблон данных, содержащий единственное управление, которое может быть пользовательским элементом управления с содержанием, в котором Вы нуждаетесь.
У меня было несколько проблем с этим кодом, получая элемент не foung исключения. Только для ссылки, случалось так, что мне было нужно мое пространство имен, включенное в DataTemplate...
private DataTemplate Create(Type type)
{
string xaml = @"<DataTemplate
xmlns=""http://schemas.microsoft.com/client/2007""
xmlns:controls=""clr-namespace:" + type.Namespace + @";assembly=" + type.Namespace + @""">
<controls:" + type.Name + @"/></DataTemplate>";
return (DataTemplate)XamlReader.Load(xaml);
}
использование XAML, которое определяет содержание для создания шаблона данных, не представлено как устанавливаемое свойство. Это - специальное поведение, встроенное в обработку XAML элемента объекта DataTemplate.