Member 13688663 Ответов: 1

System.invalidoperationexception: "коллекция элементов должна быть пустой перед использованием itemssource".


Когда я нажимаю на кнопку система выбрасывает исключение
System.InvalidOperationException: 'Items collection must be empty before using ItemsSource.'

Я не могу найти эту проблему

Что я уже пробовал:

Я пытаюсь создать дерево, когда нажимаю на такую кнопку
<pre>private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            var subModules = new List<ITreeNode>
        {
            new SubModule { Name = "Sub Module 1" }
        };
            var subThreads = new List<ITreeNode>
        {
            new SubThread { Name = "Sub Thread 1" }
        };
            var nodes = new List<ITreeNode>
        {
            new Thread { Name = "Thread ", ChildNodes = subThreads },
            new Module { Name = "Module ", ChildNodes = subModules }
        };
            var processes = new List<RunProcesses>
        {
            new RunProcesses{ Name = "Process1", ChildNodes = nodes }
        };
            TreeView.ItemsSource = processes;

        }

1 Ответов

Рейтинг:
2

OriginalGriff

Прочтите сообщение об ошибке, оно довольно явное:

System.InvalidOperationException: 'Items collection must be empty before using ItemsSource.'
Вы устанавливаете свойство ItemsSource коллекции (Treeview), в которой уже есть данные.

Проверьте свой XAML или очистите коллекцию элементов.


Member 13688663

<TreeView x:Name="TreeView">
        <treeview.resources>
            <HierarchicalDataTemplate DataType="{x:Type local:RunProcesses}" ItemsSource="{Binding ChildNodes}">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Path=Name, StringFormat='{}{0} '}" />
                    <TextBlock Text="{Binding Path=ID, StringFormat=(ID: {0})}" />
                
            
            <HierarchicalDataTemplate DataType="{x:Type local:Module}" ItemsSource="{Binding ChildNodes}">
                <TextBlock Text="{Binding Path=Name}" />
            

            <HierarchicalDataTemplate DataType="{x:Type local:Thread}" ItemsSource="{Binding ChildNodes}">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Path=Name, StringFormat='{}{0} '}" />
                    <TextBlock Text="{Binding Path=ID, StringFormat=(ID: {0})}" />
                
            
            <HierarchicalDataTemplate DataType="{x:Type local:SubThread}" ItemsSource="{Binding ChildNodes}">
                <TextBlock Text="{Binding Path=Name}" />





Это xmal код и itemsource пуст

Member 13688663

Это классы
публичный интерфейс ITreeNode
{
string имя { получить; набор; }
List<itreenode> ChildNodes { get; set; }
}
публичный класс RunProcesses : ITreeNode
{
public string Name { get; set; }
public int ID { get; set; }
публичный список<itreenode> ChildNodes { get; set; }
}
модуль публичного класса : ITreeNode
{
public string Name { get; set; }
публичный список<itreenode> ChildNodes { get; set; }
}
поток открытого класса : ITreeNode
{
public string Name { get; set; }
public int ID { get; set; }
публичный список<itreenode> ChildNodes { get; set; }
}
подмодуль публичного класса : ITreeNode
{
public string Name { get; set; }
общественная список<itreenode&ГТ; ChildNodes { вам =&ГТ; нуль; набор =&ГТ; бросить новую систему.Исключение notimplementedexception(); }
}
подпространство публичного класса : ITreeNode
{
public string Name { get; set; }
общественная список<itreenode&ГТ; ChildNodes { вам =&ГТ; нуль; набор =&ГТ; бросить новую систему.Исключение notimplementedexception(); }
}

Member 13688663

Будь добр, укажи мне, где я ошибаюсь.