Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
4 / 4 / 3
Регистрация: 28.11.2017
Сообщений: 107
1

Binding Статическое свойство

17.02.2020, 13:57. Показов 372. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Столкнулся со странным поведением кода при привязке к статическому свойству...

Есть класс Regions, где лежит статическое свойство
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
namespace Test.Classes
{
    class Regions
    {
         public static ObservableCollection<Region> Regions_Collection { get; set; } = new ObservableCollection<Region>();
    }
 
    class Region
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
}
Вот так я его заполняю из полученной таблицы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public DataTable Regions_Add
        {
            set
            {
                try
                {
                    if (Regions.Regions_Collection.Count != 0) { 
                        Regions.Regions_Collection.Clear(); }
                    foreach (DataRow row in value.Rows)
                    {
                        Regions.Regions_Collection.Add(new Region
                        {
                            Id = (int)row["ID"],
                            Name = (string)row["NAME"]
                        });
                    }
                }
                catch (Exception ex)
                {
                    Classes_Global.Logs.Error = ex.Message;
                }
            }
        }
И привязываю это свойство к ListBox
XML
1
2
3
xmlns:local ="clr-namespace:Test.Classes"
 
<ListBox ItemsSource="{Binding Source={x:Static local:Regions.Regions_Collection},Mode=OneWay}"/>
У меня должно получиться две записи, но я получаю только одну...
Если я использую List вместо ObservableCollection, тогда я получаю все две записи... Но не могу понять, почему такое поведение с ObservableCollection?
Причем у меня есть другие ListBox, к которым я привязываю другие классы с свойствами ObservableCollection и там все работает нормально...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.02.2020, 13:57
Ответы с готовыми решениями:

Binding текста в ComboBoxEdit не записывает в свойство
Записывается текст только когда эдит теряяет фокус.Как сделать чтобы записывало после каждого ввода...

Секреты Binding или как мне прибить свойство свойства в XAML
Всем привет! народ подскажите вот какую вещь... есть у меня класс Person, в этом классе есть...

Передать внутри Binding в ConverterParameter ссылку на окно содержащее объект, который использует Binding
В главном окне в ресурсах есть Контекстные меню. У программы есть &quot;Ручной режим&quot;, если режим тру....

Используя статическое наследование, статическое замещение, виртуальное или динамическое замещение, написать программу-калькулятор
Помогите ребят, препод барыга. пришёл. о языке ни слова. Дал задание и ушёл( это первые две пары...

5
1577 / 583 / 183
Регистрация: 05.12.2015
Сообщений: 935
17.02.2020, 15:58 2
тогда на выбор два варианта:
1 ошибка в классе ObservableCollection
2 ошибка в твоей программе
сообрази вероятности
0
Модератор
Эксперт .NET
15464 / 10710 / 2786
Регистрация: 21.04.2018
Сообщений: 31,531
Записей в блоге: 2
17.02.2020, 23:00 3
Цитата Сообщение от ndrnesterov Посмотреть сообщение
У меня должно получиться две записи, но я получаю только одну...
Поставьте точку останова на цикле
C#
9
foreach (DataRow row in value.Rows)
и пошагово проверьте сколько элементов добавляется.

P.S. Ещё совет, раз используете ObservableCollection, то сделайте свойство неизменяемы, иначе смысл этой коллекции теряется. Да, и неожиданные баги можете поймать.
C#
3
4
5
6
7
     class Regions
    {
         public static ObservableCollection<Region> RegionsCollection { get; /* set; */ } 
                 = new ObservableCollection<Region>();
    }
1
4 / 4 / 3
Регистрация: 28.11.2017
Сообщений: 107
18.02.2020, 16:21  [ТС] 4
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Поставьте точку останова на цикле
Ставил... В value содержатся все две строки, но после записи первой, цикл обрывается... При этом нет исключения...

Добавлено через 23 секунды
Цитата Сообщение от Элд Хасп Посмотреть сообщение
P.S. Ещё совет, раз используете ObservableCollection, то сделайте свойство неизменяемы, иначе смысл этой коллекции теряется. Да, и неожиданные баги можете поймать.
Спасибо)) Исправил) Буду знать на будущее...
0
1577 / 583 / 183
Регистрация: 05.12.2015
Сообщений: 935
18.02.2020, 20:33 5
убери привязку коллекции к ListBox и проверь как в этом случае идет заполнение.
а лучше выложи минимальный проект.
1
Модератор
Эксперт .NET
15464 / 10710 / 2786
Регистрация: 21.04.2018
Сообщений: 31,531
Записей в блоге: 2
18.02.2020, 20:43 6
Цитата Сообщение от ndrnesterov Посмотреть сообщение
Ставил... В value содержатся все две строки, но после записи первой, цикл обрывается... При этом нет исключения...
У вас где-то ошибка в логике или в данных, но не тех в кусочках кода, что вы предоставили.
Сами не разберётесь - выложите архив приложения.
1
18.02.2020, 20:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.02.2020, 20:43
Помогаю со студенческими работами здесь

Основное свойство многочлена тейлора? Что это за свойство?
(о значениях в в точке x0 функции и ее многочлена тейлора, а так же их производных). Так же нужно...

Статическое электричество
почему статику с паяльника, тела надо снимать именно через резистор в 1МОм, почему нельзя снимать...

Статическое поле
Помогите с такой проблемой. Программа нормально компилится, но возвращается, вот такая ошибка при...

Статическое подключение Dll
Доброго времени суток. Подключаю библиотеку и пишет ошибку, что не может найти точку входа в...

Статическое подключение DLL
Хочу подключить dll в файл при компиляции в VC++ Project -&gt; Settings... -&gt; Вкладка General -&gt;...

Фрагмент и статическое поле
В моем приложении динамическая реализация фрагментов. В методе onClick записи типа case...


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

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