Pull to refresh

Comments 13

UFO landed and left these words here
Упс, вы скорее всего меня неверно поняли :) Я не критикую WPF Layout System, просто ввиду отсутствия в статье расшифровки этих 3 загадочных букв WPF мозг подкинул такую асоциацию… Да и созвучно както, WPF и WTF, если именно по буквах произносить…
Ну если не знаете, видимо вам и не надо. Да и в принципе есть гугл иль другой поисковик для таких случаев.
Сказали бы пару слов об особенностях реализации и вызовов этих методов, особенно в случае с виртуальными стек-панелями. Это же самое интересное.
Вообще у меня есть мысль сделать вики-страничку на эту теме, поскольку хотелось бы иметь место для складывания полезной инфы. Вопрос только — где это можно сделать так, чтобы было доступно всем и удобно? У меня есть блог на вордпрессе, но боюсь, там не предусмотрена такого рода функциональность.
Если вы хотите привлечь экспертов — забудьте. Лучше напишите как сами понимаете — в комментарии придут люди и поправят, если нужно будет.
К сожалению, формат статьи не позволяет добавлять что-то или менять. Статья — это вид подачи информации «сразу» (все что смог написать — написал), потому что даже если я буду потом редактировать, то все равно уже навряд ли кому-то это будет интересно. В этом и проблема. А в вики участвуют все и обращаются к ней постоянно, поэтому актуальности вики-странички не теряют.
А есть ли отличие между Silverligth и WPF в этом плане?
Помоему нет, Layout система одна и та же используется.
В сервелате нету метода OnRender. И да, меня тоже часто заносит при написании слов light, height, right и т.д.
— InvalidateMeasure и InvalidateArrange приводят к вызову OnRender самого элемента, для которого они вызываются, только если изменился размер прямоугольника элемента, т.е. не всегда.
— У кнопки нет текста, а есть Content. Это свойство не помечено как AffectsXXX, вместо этого оно
влияет на внешний вид через шаблон. Если присвоить этому свойству объект класса String, то по умолчанию будет сгенерирован визуальный элемент класса TextBlock. А вот уже его свойство Text помечено флагом AffectsMeasure | AffectsRender. При изменении этого свойства у TextBlock'а и у всех его родительских элементов, вплоть до окна, естественно, включая кнопку, сбрасывается флаг IsMeasureValid и планируется вызов пересчета лейаута. Если изменить контент кнопки так, что размер кнопки не изменится, то MeasureOverride/ArrangeOverride будут рекурсивно вызваны для всей ветки визуального дерева, начиная с окна, но только для элементов без флагов IsArrangeValid/IsMeasureValid, а OnRender будет вызван только для TextBlock'а
Согласен, Button — не самый удачный пример, надо было взять TextBlock как конечный элемент визуального дерева.
Sign up to leave a comment.

Articles