2012-07-17 66 views
0

的'根項目我有一個TreeViewDataTemplateSelector.SelectTemplate沒有得到要求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> 

和DataTemplateSelector:

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,它們只顯示爲空箭頭。

回答

0

我相信你應該直接在TreeView上設置選擇器,而不是在TreeView上放置一個ItemTemplate,

<TreeView Grid.Row="0" Grid.Column="2" ItemsSource="{Binding ResourceInstanceRootItems}"> 
    <TreeView.ItemTemplateSelector> 
     <local:ResourceInstDataTemplateSelector/> 
    </TreeView.ItemTemplateSelector> 
</TreeView> 
+0

謝謝。我感到羞愧,我錯過了。 – nakiya 2012-07-17 14:09:17