Fatal Runtime Ошибка в WPF при переключении между визуальными состояниями - PullRequest
2 голосов
/ 21 сентября 2011

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

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

1 Ответ

0 голосов
/ 26 сентября 2011

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

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

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

...