Учитывая, что:
- Шаблоны данных не могут быть назначены TargetType
- Ссылки на StaticResource могут ссылаться только ранее
Как создать один шаблон для следующей ситуации в TreeView?
class Resource {
public string Name {get;}
public IEnumerable<Property> Properties {get;}
}
class Property {
public string Name {get;}
public IEnumerable<Resource> Values {get;}
}
Эта структура хорошо подходит для дерева, которое будет выглядеть так:
Resource 1
|- Property A
| - Resource 2
| - Resource 3
|- Property B
|- Resource 4
Это было бы тривиально для шаблона в WPF из-за свойства TargetType
HierarchicalDataTemplate
. В Silverlight нам нужно было бы сделать что-то вроде:
<HierarchicalDataTemplate x:Key="ResourceTemplate"
ItemSource="{Binding Properties}"
ItemTemplate={StaticResource PropertyTemplate}" />
<HierarchicalDataTemplate x:Key="PropertyTemplate"
ItemSource="{Binding Values}"
ItemTemplate="{StaticResource ResourceTemplate}" />
Что, очевидно, не может работать, потому что ResourceTemplate
не может ссылаться на PropertyTemplate
, потому что оно определено после него в документе XAML. Итак, как вы решаете эту проблему курицы и яйца?