WPF TreeView не отображает элементы из наблюдаемой коллекции - PullRequest
2 голосов
/ 07 марта 2020

У меня есть TreeView, который я связываю с наблюдаемой коллекцией, в которой есть одна наблюдаемая коллекция.

У меня есть следующие классы:

базовый класс:

public class BaseObject : BindableBase, IBaseObject
{
    public string Name { get; set; }
}

и 2 других класса для каталогов и файлов, которые наследуются от этого BaseObject. Сейчас разница между классом File и Directory заключается в коллекции:

    public ObservableCollection<BaseObject> DirectoryItems
    {
        get => _directoryItems;
        set
        {
            _directoryItems = value;
            RaisePropertyChanged();
        }
    }

В моей модели представления я добавляю файлы и каталоги для заполнения наблюдаемой коллекции, но проблема в том, что TreeView пуст. Ниже приводится xaml:

<UserControl.Resources>
    <DataTemplate 
        x:Key="ProjectExplorerFileTemplate">
        <TextBlock Text="{Binding Path=Name}" />
    </DataTemplate>

    <HierarchicalDataTemplate 
        x:Key="ProjectExplorerFolderTemplate"
        ItemTemplate="{StaticResource ProjectExplorerFileTemplate}"
        ItemsSource="{Binding Path=DirectoryItems}">
        <TextBlock Text="{Binding Path=Name}" />
    </HierarchicalDataTemplate>
</UserControl.Resources>
<Grid Margin="10">
    <TreeView 
        Name="ProjectExplorerTreeView"
        ItemTemplate="{StaticResource ProjectExplorerFolderTemplate}"
        ItemsSource="{Binding Path=ProjectExplorerNodes}" />
</Grid>

Я не уверен, где я делаю что-то не так. В наблюдаемой коллекции у меня есть все данные, которые мне нужны. Проблема в xaml?

EDIT. ProjectExplorerNodes - это наблюдаемые коллекции, в которые я добавляю файлы и каталоги с пути root в модель представления.

    public ObservableCollection<BaseObject> ProjectExplorerNodes
    {
        get => _projectExplorerNodes;
        set
        {
            _projectExplorerNodes = value;
            RaisePropertyChanged();
        }
    }
...