7 / 7 / 1
Регистрация: 24.07.2014
Сообщений: 113
1

Семейство Items должно быть пустым

26.09.2014, 09:27. Показов 29366. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, уважаемые.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void InsertItemsToCB()
        {
            CBcontent abc;
            List<CBcontent> lst_item = new List<CBcontent>();
            ComboBox1.ItemsSource = lst_item; ///
            for(int i = 0; i < 10; i++)
            {
                abc = new CBcontent(){it1 = i};
            }
        }
    }
 
    public class CBcontent
    {
        public int it1 { set; get; }
    }
Вылетает exception:
"Перед использованием свойства ItemsSource семейство Items должно быть пустым."
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2014, 09:27
Ответы с готовыми решениями:

Как должна быть организована сеть офиса? Что должно быть настроено обязательно, а чего быть не должно?
Добрый день. Сразу оговорюсь, что я инженер-строитель и настройкой сети занимаюсь только потому,...

Коллеги,в программе должно считать выделенные элементы. Считает программа неправильно(должно быть 69.Подскажитегдеошибка
#include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;windows.h&gt; const int...

Какая должна быть длина одной стороны шестиугольника, если расстояние между ними должно быть 2.5 метра.
Помогите, пожалуйста, разобраться! Какая должна быть длина одной стороны шестиугольника, если...

Файл не может быть пустым?
Пишу такой код //проверка существование каталога(пользователя) для картинок загруженных им, и...

8
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
26.09.2014, 09:42 2
ну так в тексте исключения все написано.
свойство Items - имеется ввиду у ComboBox1
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
26.09.2014, 10:38 3
Лучший ответ Сообщение было отмечено Aloe_Sharpist как решение

Решение

Aloe_Sharpist,
C#
1
abc = new CBcontent(){it1 = i};
а что это за шаманство такое? зачем одной переменной присваивать 10 раз ссылку на новый объект?
по вопросу: Items - это коллекция, которую,скорее всего, вы создали в конструкторе. Контсруктор формы-ПКМ по ComboBox1-ищем свойство Items - там кнопочка - и удаляем все элементы.
ну или в программе вы где-то выполняете ComboBox1.Items.Add(...);
чтоб очистить можно воспользоваться конструктором, как я написал, а можно и программно:
У Items, как и у почти каждого контейнера, есть свойство Clear() - оно и удаляет(безвозратно! если на них не ссылаются другие переменные) все элементы коллекции.
2
7 / 7 / 1
Регистрация: 24.07.2014
Сообщений: 113
26.09.2014, 14:01  [ТС] 4
Learx, помогло, спасибо.
З.Ы. учусь, потому и шаманство)
0
4 / 4 / 0
Регистрация: 12.12.2013
Сообщений: 60
11.03.2018, 21:31 5
Столкнулся с такой же проблемой. При создании нового графического элемента на форме в ListView автоматически был добавлен пустой элемент System.object[0]

Но на самом деле, если разобраться, то произошло это из-за изменения свойств ListBox, связанных с данными для связки, такими как ItemsSource="{Binding ''}" DataContext="{Binding myList}". Если выполнять добавление или удаление этих свойств в редакторе XAML и при этом свойства будут ссылаться на недопустимый объект, то возникнет такая ситуация.

(Проверить это можно успешностью привязки данных во время запуска приложения, если привязка неудачная, то будет получено сообщение в консоли вида "System.Windows.Data Error: 40 : BindingExpression path error: 'ProjectBeginTime' property not found on 'object' ''Object' ").

К слову, в тексте ошибки тоже указывается объект Object (хотя на самом деле выполнялась привязка пользовательской модели).

При этом отображение элемента управления до и после очистки списка выглядит одинаково при старте приложения, т.е. когда нечего отображать.

Сначала я просто ума не мог приложить откуда берутся элементы в пустом, только что созданном списке.
Спасибо. Теперь можно спокойно выполнять биндинг.
Миниатюры
Семейство Items должно быть пустым   Семейство Items должно быть пустым  
0
-5 / 5 / 1
Регистрация: 18.05.2013
Сообщений: 503
26.11.2018, 16:48 6
Ребята у меня та же самая проблема, в wpf новичок до соплей, прям новичок овичком, в общем набросал код он был на GridView , возникла надобность переделать под ListBox , были ошибки камни, но я справился с тем что практически нет ошибок (типа все работает), но при нажатии на кнопку обновить у меня вылазит ошибка
"Перед использованием свойства ItemsSource семейство Items должно быть пустым."
C#
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
    public class IssueW
    {
        public IssueW()
        {
        }
 
        public IssueW(string ImagesWA, string NameWA)
        {
            Imagesw = ImagesWA;
            Namew = NameWA;
        }
        public string Imagesw { get; set; }
        public string Namew { get; set; }
 
       
    }
 
 
 
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
 
        public ObservableCollection<IssueW> issuew { get; set; }
 
 
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;
 
        }
 
        private async void Refresh_Button_Click(object sender, RoutedEventArgs e)
        {
            string json = await RequestJson();
            this.ParseJson(json);
        }
        private async Task<string> RequestJson()
        {
            string url = "http://infodownload.soft.mirmastera.ru/cat.php?id=1";// "http://www.redmine.org/issues.json";
            HttpClient client = new HttpClient();
            Task<string> getStringTask = client.GetStringAsync(url);
            string result = await getStringTask;
            return result;
        }
 
        private void ParseJson(String json)
        {
            try
            {
                //List<IssueW> issues = new List<IssueW>();
                 issuew = new ObservableCollection<IssueW>();
                JObject obj = JObject.Parse(json);
                JArray array = JArray.Parse(obj["data"].ToString());// JArray.Parse(obj["issues"].ToString());
                foreach (JObject itemObj in array)
                {
                    IssueW issuex = new IssueW();
                    issuex.Imagesw = itemObj["image"].ToString();
                    // issue.Id = itemObj["id"].ToString();
                    issuex.Namew = itemObj["name"].ToString();
                    // issue.Desc = itemObj["desc"].ToString();
                    // issue.Author = itemObj["author"]["name"].ToString();
                    issuew.Add(new IssueW(
                        issuex.Imagesw,
                        issuex.Namew
                   ) );
                    //  issues.Items.Add(issue);
                }
 
                //IssueListView.ItemsSource = issues;
                lbTodoList.ItemsSource = issuew;
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

XAML
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
 <ListBox x:Name="lbTodoList" ItemsSource="{Binding lbTodoList}" Margin="10,42,10,10" MouseDoubleClick="getSelectedItem">
            <ListBoxItem Margin="3">
                <StackPanel Orientation="Horizontal">
                    <Image Source="{Binding Imagesw}" Width="60" />
                    <TextBlock Text="{Binding Namew}"></TextBlock>
                </StackPanel>
            </ListBoxItem>
        </ListBox>

Помогите решить проблему.
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
26.11.2018, 17:33 7
CoMMoN86, в контексте данных у тебя свойство issuew, а биндинг на lbTodoList. Почему? Биндиться нужно к issuew, и обновлять нужно его, а не ItemsSource. Ну и не забыть про INotifyPropertyChanged.
0
-5 / 5 / 1
Регистрация: 18.05.2013
Сообщений: 503
26.11.2018, 18:02 8
ViterAlex, что то я не понял, пробую сменить lbTodoList -> issuew подчеркивается красным, а про INotifyPropertyChanged я даже не знаю что это такое
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
26.11.2018, 19:58 9
CoMMoN86, я не обратил внимания, что ты неправильно задаёшь элемент списка. Если используются привязки, то элемент списка нужно задавать через ItemTemplate. Вот простой пример:
xaml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<Window x:Class="WpfApp1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="800"
    Height="450"
    mc:Ignorable="d">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto" />
            <RowDefinition />
        </Grid.RowDefinitions>
        <Button HorizontalAlignment="Left"
            Click="Button_Click"
            Content="Fill List" />
        <ListBox Grid.Row="1"
            MinWidth="200"
            HorizontalAlignment="Left"
            ItemsSource="{Binding Issues}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Border Margin="3"
                        Padding="5"
                        BorderBrush="Black"
                        BorderThickness="1.5"
                        CornerRadius="5">
                        <StackPanel Orientation="Vertical">
                            <TextBlock FontWeight="Bold"
                                Text="{Binding Text}" />
                            <TextBlock Text="{Binding Description}" />
                        </StackPanel>
                    </Border>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>
</Window>

code behind
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
using System;
using System.Collections.ObjectModel;
using System.Windows;
 
namespace WpfApp1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public ObservableCollection<IssueW> Issues { get; set; }
 
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;
            Issues = new ObservableCollection<IssueW>();
        }
 
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            //Как-то заполняем коллекцию
            Issues.Clear();
            var rnd = new Random(DateTime.Now.Millisecond);
            for (int i = 0; i < 10; i++)
            {
                Issues.Add(new IssueW
                {
                    Text = $"Text{rnd.Next(100)}",
                    Description = $"Desc{rnd.Next(100)}"
                });
            }
        }
    }
 
    public class IssueW
    {
        public string Text { get; set; }
        public string Description { get; set; }
    }
}

Заполняем ListBox из свойства Issues в форме, которая сама для себя является контекстом данных. Элементы списка определяем через ItemTemplate в строках 22-36
При нажатии кнопки очищаем коллекцию Issues (не ListBox!) и заполняем её новым содержимым. Поскольку Issues у нас имеет тип ObservableCollection, то, благодаря привязке, ListBox узнаёт, что коллекция изменилась и пересоздаёт своё содержимое.
1
26.11.2018, 19:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2018, 19:58
Помогаю со студенческими работами здесь

Может ли Nd.universalid быть пустым?
Привет, случается ошибка, вероятнее всего nd.UniversalID возвращает &quot;&quot;. В дебагере такой результат...

Элемент массива с индексом 2 должен быть пустым
using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Ошибка:название папки не может быть пустым
Вот код: &lt;?php function open_read(){ $dir = $open; $files = scandir($dir); for...

Запись не верна: значение поля не может быть пустым
Конфа erp 2.1. Не проводится документ Заказ давальца. Ошибка: запись не верна значение поле...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru