|
3 / 3 / 0
Регистрация: 23.12.2016
Сообщений: 278
|
|||||||||||||||||||||||||||||||
Почему у ContentControl не срабатывает триггер на событие DataContextChanged02.04.2026, 09:11. Показов 2186. Ответов 23
Здравствуйте.
Происходит что-то непонятное. У меня есть основное окно в ней TabControl, вкладки создаются динамически, содержимое вкладок практически идентичное, отличается только основной контрол для отображения данных. Создал UserControl который содержит ContentControl для отображения этих отличающихся данных. Мне надо чтоб при переходе по вкладкам (и при первом открытии окна и первой вкладки) происходила загрузка данных из базы. Попробовал сделать так:
Xaml UserControl:
Попробовал через обработчик события вызывать команду и видимо мой вариант не подходит, при первом попадании команда null и ничего не происходит, а при переходе на другую вкладку вызывается команда из первой TabVM, хотя должна вызываться из второй. Может быть надо это делать на уровне TabControl, но там не получилось добавить команду для загрузки данных
0
|
|||||||||||||||||||||||||||||||
| 02.04.2026, 09:11 | |
|
Ответы с готовыми решениями:
23
Освобождение памяти при очистке ContentControl Создание динамической привязки с ContentControl |
|
Модератор
|
|||||||||||||||||
| 07.04.2026, 20:23 | |||||||||||||||||
Сообщение было отмечено IIIIIIIIIgor как решение
Решение
Ну, или оставить как есть и подключить выбор индекса после изменения ItemsSource:
1
|
|||||||||||||||||
|
3 / 3 / 0
Регистрация: 23.12.2016
Сообщений: 278
|
||
| 07.04.2026, 20:52 [ТС] | ||
|
Элд Хасп, спасибо! это решило вопрос.
Объясните, пожалуйста, что такого изменило задать DataContext через ресурсы приложения? В чем такая разница как задан контекст?
0
|
||
|
Модератор
|
|||
| 08.04.2026, 01:46 | |||
InitializeComponent();.В вашем коде, на момент выполнения этого метода, ещё нет Контекста Данных и значит ItemsSource="{Binding TabViewModels}"=null. В этом случае задание индекса SelectedIndex="0" не срабатывает, так как коллекции ещё нет. А когда он не срабатывает, то SelectedIndex принимает значение -1.После инициализации XAML вы задаёте контекст данных. Но к этому времени SelectedIndex=-1 и SelectedItem="{Binding SelectedTab}" в ViewModel тоже null. И TabControl, естественно, остаётся в невыбранном состоянии.В моём коде ViewModel создаётся до создания окна. В окне контекст данных тянется динамическим ресурсом DataContext="{DynamicResource vm}" поэтому на момент инициализации TebControl уже есть значение для его ItemsSorce и, соответственно, SelectedIndex="0" приводит к выбору элемента коллекции, который передаётся в ViewModel через привязку SelectedItem="{Binding SelectedTab}".ItemsSource. Такой универсальный вариант, который всегда сработает. Если коллекция не будет меняться, как у вас, сработает только один раз. И дальше мешать не будет. Можно конечно прослушивать DataContext, но здесь будет неочевидная логика. Ведь необязательно же смена контекста данных приведёт к смене коллекции, и необязательно что коллекция будет меняться только одновременно со сменной контекста данных. Поэтому и решил, что так будет оптимальнее и логичнее.
1
|
|||
|
3 / 3 / 0
Регистрация: 23.12.2016
Сообщений: 278
|
|
| 08.04.2026, 08:34 [ТС] | |
|
Элд Хасп, спасибо за помощь и объяснения
0
|
|
| 08.04.2026, 08:34 | |
|
ControlTemplate и ContentControl: как динамически загрузить шаблон?
System.Windows.Controls.ContentControl Не работает привязка ContentControl
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|