MeasureOverride 可用大小为无穷大

MeasureOverride available size is infinity

我在UWP 平台上实现了一个简单的自定义控件。我的问题是当我将此控件放在 Hub 中时出现此错误。

System.Runtime.InteropServices.COMException: Error HRESULT E_FAIL has been returned from a call to a COM component. at Windows.UI.Xaml.FrameworkElement.MeasureOverride(Size availableSize)

这里availableSize宽度returnsinfinity,谁能告诉我如何解决这个问题?

<Hub>
    <HubSection>
        <DataTemplate>
            <myControl:MySimpleControl />
        </DataTemplate>
    </HubSection>
</Hub>

当自定义控件被添加到 StackPanel 的子控件时,抛出相同的异常。因为当 OrientationHorizontalStackPanel 宽度为无穷大。 HubSection也有类似的场景

所以在这种情况下必须为控件分配默认(特定)宽度,然后调用 InvalidateMeasure() 来解决此问题。

此错误也会出现在涉及 ListView 已更改为 Horizontal 方向的场景中。 这是因为 ListView 内部使用 StackPanel 来排列项目。

通常,可以通过在 GridGridView 内而不是 [=13= 内安排受影响的控件(旨在填充可用水平 space 的控件)来避免此问题] 或 ListView