我有一个TreeView
:
<TreeView Grid.Row="0" Grid.Column="2" ItemsSource="{Binding ResourceInstanceRootItems}" SelectedItemChanged="TreeView_SelectedItemChanged_2">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<HierarchicalDataTemplate.ItemTemplateSelector>
<local:ResourceInstDataTemplateSelector/>
</HierarchicalDataTemplate.ItemTemplateSelector>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
和数据模板选择器:
public class ResourceInstDataTemplateSelector : DataTemplateSelector
{
public override DataTemplate
SelectTemplate(object item, DependencyObject container)
{
FrameworkElement element = container as FrameworkElement;
if (element != null && item != null && item is ResourceInstance)
{
ResourceInstance ri = item as ResourceInstance;
DataTemplate temp = null;
if (ri.Parent == null)
temp = App.Current.Resources["parent_item"] as DataTemplate;
else if (ri.DependingInstance == null)
temp = App.Current.Resources["simple_instance"] as DataTemplate;
else
temp = App.Current.Resources["dependent_instance"] as DataTemplate;
return temp;
}
return null;
}
}
问题是,ResourceInstDataTemplateSelector.SelectTemplate
不会调用 中的根项目,TreeView
它们仅显示为空箭头。