OnSizeChanged не вызывается при выпуске сборки
Я создал переносную библиотеку классов с контролем обрезки изображений для Windows Phone 8.1/Windows 8.1, и у меня возникли проблемы с поведением элементов управления в сборке выпуска.
Когда я в первый раз перехожу на страницу, которая содержит созданный элемент управления SizeChanged
событие не возбуждено (поэтому я не могу правильно наблюдать ActualWidth/ActualHeight
). Он возникает при изменении ориентации, в режиме отладки или даже когда я перехожу на другую страницу и возвращаюсь обратно на эту страницу (какой-то кэш управления навигацией по страницам?). Я отключил оптимизацию кода в сборке релиза, но это не помогает, так что я думаю, что это не проблема оптимизации компилятора. Что может быть причиной?
1 ответ
Я думаю, что нашел, как решить проблему (но не почему это происходит). Когда я пишу пользовательский элемент управления, я могу переопределить Size MeasureOverride(Size availableSize)
что удивительно дает правильный размер. Я до сих пор понятия не имею, почему это происходит, технически говоря, SizeChanged должен быть повышен - в соответствии с msdn "Процедура обработки макета": measure
-> arrange
-> raise size changed if needed
-> update layout