Re[12]: DevExpress странные ребята
От: Аноним  
Дата: 05.11.12 15:00
Оценка:
Здравствуйте, Mirimon, Вы писали:

M>Здравствуйте, Аноним, Вы писали:


А>>>>Так по факту никакой бесконечной высоты в данном случае нету, высота грида = высота формы- высота стекпанели которая строго задана. Мало ли что там приходит в measure, если уж ругаться то только когда фактическая высота устанавливается в бесконечность


M>>>Объясняю концепцию WPF — пришел межур, надо отрисоваться в том размере, который на межуре пришел, пришел новый, надо перерисоваться. Каким образом котнрол узнает, что на первый межур реагировать не надо, рисоваться не надо, а попозже придет второй, мне не ясно. Поэтому грид и начинает рисоваться на любом межуре, и если там бесконечность, он об этом сообщает. Можете написать мелким баг, что в вашей ситуации вообще приходит бесконечность, и что, по вашей логике, не должна, этот подход будет корректнее, чем обвинять грид, что он пытается рисоваться в том, что ему отдает панель.


А>>Во-первых почему то в вашей концепции WPF , 2 Measure, хотя в концепции Microsoft, есть Measure , есть Arrage, где Measure осущестствляет только опрос — какую высоту хочет занять контрол, а Arrange уже назначает ему высоту. Так что свое это предупреждение логичнее было бы вешать на Arrange, а не на Measure.

А>>Грид дествительно ведеть себя неадекватно, так как по факту он не занимает бесконечную высоту, но при этом выдает сообщение о бесконечной высоте.

M>Нет никакой "нашей" концепции WPF, есть ваш пример, который вы привели, и есть эксперимент, о котором я вам писал выше, когда надо вместо грида вставить ваш контрол и посмотреть, что приходит на межуре. Если бы вы все-таки попробуете это сделать, то увидите, что в вашем примере контрол межурится дважды, и на первом межуре ему приходит бесконечная высота. Грид стрейчится по вертикали, а значит, если ему пришла бесконечная высота на межуре, то он создаст все строки и займет максимально возможное место. Во второй раз, в вашем случае, гриду приходит конечная высота, и он перерисовывается. В итоге вы видите грид конечной высоты, но важно не только видеть конечный результат, но и понимать, какими средствами он был получен.


Да важно в первую очередь вам понимать что Measure — это панель хочет узнать какой размер планирует занять ваш контрол, а не указывает размер для вашего контрола. И вешать на Measure проверку высоты контрола — глупо, собственно не удивительно что после этого контрол получает неадекватное поведение. Почитайте про Measure и Arrange.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.