WPF лезет в базу - как задержать?
От: Kolesiki  
Дата: 01.10.21 13:24
Оценка:
Ребят, хитрый вопрос по поведению приложения: есть "морда к базе". Перед работой, разумеется, делается логин в базу (юзер вводит пароль). Только после этого становятся доступными данные таблиц.
НО(!) на главной форме есть комбобокс, куда засасываются справочные данные, используя сам же XAML:

<ComboBox ItemsSource="{Binding PersonStatus, Source={x:Static local:App.Current}}" />


Проблема в том, что как только главная форма инициализирована (но до логина), она пытается заполнить комбобокс и лезет в App.PersonStatus , который разумеется требует уже авторизованное соединение с базой, а оно у меня ещё null.

Решение №1 — тупо загружать комбобокс из кода. Что совсем не интересно и не эстетично.

Решение №2 МОГЛО БЫ сработать, если бы у комбобокса была отложенная загрузка. Что обидно: где НЕ надо, отважные индусы вкорячили в WPF "отложенную загрузку" всего и вся, но вот для ItemsSource её почему-то нет! (ведь я ещё не раскрывал ComboBox, зачем УЖЕ сосать туда данные?)

Решение №3 — открывать отдельное read-only соединение к базе (ещё перед инитом формы) и сосать справочные данные оттуда. Но это костыль и самое последнее, что хочется делать.

Есть какие-то ещё варианты, как задержать загрузку ItemsSource?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.