Неустранимая ошибка времени выполнения в WPF при переключении между визуальными состояниями

У меня иногда возникает эта ошибка в конкретном случае. Это происходит именно тогда, когда я переключаюсь из визуального состояния в другое. Я предполагаю, что это происходит из-за плохой анимации свойств, но мне интересно, в каких условиях возникает это исключение. Вот сообщение об ошибке:

Среда выполнения обнаружила фатальную ошибку. Адрес ошибки был 0x58e3ba0d в потоке 0xabc. Код ошибки - 0x80131623. Эта ошибка может быть ошибкой в ​​CLR или в небезопасных или неподдающихся проверке частях пользовательского кода. Общие источники этой ошибки включают ошибки маршалинга пользователей для COM-взаимодействия или PInvoke, которые могут повредить стек.

заранее спасибо


person Paul    schedule 21.09.2011    source источник
comment
Еще больше уточнений: у меня есть кнопка и к ней прикреплен объект GoToStateBehavior для изменения визуального состояния. В новом состоянии кнопка свернута. Итак, я предполагаю, что вы не можете свернуть объект, который запускает GoToStateAction. Может быть, объект кнопки разрушен в момент запуска действия ... Может ли кто-нибудь подтвердить эту версию, добавить уточнения или дать другое объяснение?   -  person Paul    schedule 21.09.2011


Ответы (1)


Думаю, я нашел объяснение: во время перехода между состояниями я пытался свернуть части пользовательского интерфейса. Среди этих частей есть некоторые элементы управления (кнопки), к которым прикреплено несколько поведений.

После некоторых тестов я заметил, что сворачивание элемента управления, к которому привязано поведение, похоже, вызывает исключение. Сворачивание удаляет ссылку на объект, а в присоединенном поведении остается пустая ссылка, которая вызывает исключение. Я не знаю точно, что происходит, но я почти уверен, что это причина. Вроде бы бывает и со «скрытой» видимостью. Итак, единственный обходной путь, который я нашел на данный момент, - это уменьшить непрозрачность элемента управления и установить его высоту на 0.

Если кто-то нашел лучший способ избежать этой проблемы ...

person Paul    schedule 26.09.2011
comment
На самом деле, это не объяснение ... После того, как я убрал поведение, у меня все еще есть проблема ... - person Paul; 07.10.2011