ElementFlow: исключение в MeasureOverride - PullRequest
0 голосов
/ 25 марта 2009

Я пытаюсь использовать элемент управления FluidKits ElementFlow в моем приложении, но получаю исключение в методе MeasureOverride ElementFlow.

Переопределение измерения макета элемента 'FluidKit.Controls.ElementFlow' не должно возвращать PositiveInfinity в качестве его DesiredSize, даже если бесконечность передается как доступный размер.

В примере приложения после FluidKit все идет хорошо. Когда вызывается MeasureOverride, availableSize-struct инициализируется границами элемента управления, но в моем приложении он поставляется с INF для ширины и высоты.

Я пытался найти различия между образцом и моим приложением, но оба они представляют собой окно с сеткой со списком, в котором используется ElementFlow для ItemsPanel.

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

Есть предложения?

Ответы [ 3 ]

0 голосов
/ 08 мая 2009

См. Обсуждение на сайте FluidKit CodePlex. Простой ответ - открыть код ElementFlow и изменить возвращаемое значение в MeasureOverride с availableSize на _viewport.DesiredSize.

0 голосов
/ 13 августа 2015

Вы просто не можете использовать элемент управления ElementFlow в сетке или панели переменного размера. Он не написан для обработки этой ситуации, как указано в исключении, которое вы получаете.

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

Если вы показываете свой xaml для страницы, должно быть легко увидеть, какой родительский элемент управления позволяет своему контенту расти бесконечно.

0 голосов
/ 06 апреля 2009

Есть ли шанс, что вы можете опубликовать пример кода?

У меня была похожая проблема, оказалось, что я должен был использовать сетку в качестве корневого элемента (ранее сетка была в Canvas, в итоге я переместил ее в пользовательский элемент управления, и все работало нормально).

...