Может кто-нибудь объяснить, что Child.Measure (availableSize) делает в silverlight? - PullRequest
2 голосов
/ 11 марта 2010
    protected override Size MeasureOverride(Size availableSize)
    {

        foreach (UIElement child in Children)
        {
            child.Measure(availableSize);
            //you get the desired size after

        }


    }

Поэтому для краткости я сократил код, но у меня возникли проблемы с пониманием, почему в некоторых примерах они передают доступный размер дочернему элементу, а затем после получения свойства DesiredHeight, DesiredWidth.Что на самом деле измеряет Мера и почему я вообще должен что-то передавать?Я прочитал MSDN и сделал примеры и до сих пор не понимаю, или, может быть, я слишком много думаю об этом.

Ответы [ 2 ]

1 голос
/ 11 марта 2010

Элементы управления размещаются в WPF как структура дерева (VisualTree). «Панель» - это тип элемента управления, который может содержать в себе множество дочерних элементов UIElement или, другими словами, панели используются в качестве LayoutSystem в WPF / Silverlight. Платформой для заданных панелей являются StackPanel, Grid, Canvas и т. Д. А если вы извлекаете класс из Panel и переопределяете MeasureOverride () и ArrangeOverride (), вы сможете создавать собственные панели.

Хорошо, теперь ответ на вопрос. В пользовательской панели или элементе управления вы можете вызвать child.Measure (availableSize), чтобы все дети следующего уровня знали, что «availablesize» - это то, что теперь имеет «child». И дает возможность выбрать те дочерние элементы, которые вписываются в него. Как будто я говорю своим детям, что это пространство, которое мы должны решить, какие у вас размеры. Поэтому, когда элемент управления вызывает Measure (), он передает его последующим дочерним элементам, и каждый из них будет вызывать свой собственный measure () до конца VisualTree, а после завершения этого вызова вы сможете увидеть требуемый размер дочернего элемента, требуемого в дочернем элементе. .DesiredSize. Теперь, когда у вас есть все желаемые размеры детей, вы можете вычислить желаемый размер элемента управления и вернуть его в конце функции MeasureOverride ()

Механизм компоновки работает в два этапа: «Измерить и расположить». Как только вы измерите своих детей с имеющимся размером, вы можете расположить своих детей, потому что в этот момент вы будете знать, какой размер нужен каждому из детей от ребенка. DesiredSize

0 голосов
/ 11 марта 2010

Я полагаю, что при прочтении документации доступный размер используется для ограничения размера базовых элементов управления, которые составляют целевой элемент управления. Таким образом, они могут рухнуть, если доступный размер слишком мал или увеличится только до максимального размера (независимо от размера целевой области).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...