我正在编写一个继承自FrameworkElement的自定义控件。我使用DrawingVisual渲染到屏幕。因此,我必须自己计算我绘制的视觉效果的最佳大小。如果HorizontalAlignment设置为Stretch,我想使用所有可用空间。只有WPF无法确定实际可用的空间: - (
在MeasureOverride中,constraint.Width为Infinity。我需要返回一个小于Infinity的所需大小,否则我得到异常“InvalidOperationException:元素'xyz'的布局测量覆盖不应该将PositiveInfinity作为DesiredSize返回,即使Infinity作为可用大小传入。”
我试图返回0,希望这次可以通过所有可用空间,因为在MeasureOverride中它表示无限宽度可用。但是ArrangeOverride说arrangeBounds.Width是0。
我试图返回任意宽度(好吧,实际上我将Monitor宽度返回到MeasureOverride),然后ArrangeOverride告诉我可以使用完整的监视器,当然,这不是真的: - (
那么我应该在MeasureOverride中返回以获得真正可用的最大空间?