0

私は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ず、空の矢印としてのみ表示されることです。

4

1 に答える 1

0

たとえば、セレクターがある TreeView に ItemTemplate を配置するのではなく、TreeView にセレクターを直接設定する必要があると思います。

<TreeView Grid.Row="0" Grid.Column="2" ItemsSource="{Binding ResourceInstanceRootItems}">
    <TreeView.ItemTemplateSelector>
        <local:ResourceInstDataTemplateSelector/>
    </TreeView.ItemTemplateSelector>
</TreeView>
于 2012-07-17T06:39:46.847 に答える