|
3 / 3 / 0
Регистрация: 23.12.2016
Сообщений: 273
|
|||||||||||||||||||||||||||||||
Почему у ContentControl не срабатывает триггер на событие DataContextChanged02.04.2026, 09:11. Показов 1675. Ответов 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
Сообщений: 273
|
||
| 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
Сообщений: 273
|
|
| 08.04.2026, 08:34 [ТС] | |
|
Элд Хасп, спасибо за помощь и объяснения
0
|
|
| 08.04.2026, 08:34 | |
|
ControlTemplate и ContentControl: как динамически загрузить шаблон?
System.Windows.Controls.ContentControl Не работает привязка ContentControl
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|