MeasureOverride可用大小为无穷大

时间:2016-11-03 15:45:57

标签: c# exception custom-controls

我在UWP平台中实现了一个简单的自定义控件。我的问题是当我把这个控件放在Hub里面时我得到了这个错误。

  

System.Runtime.InteropServices.COMException:错误HRESULT E_FAIL具有   从调用COM组件返回。在   Windows.UI.Xaml.FrameworkElement.MeasureOverride(Size availableSize)

此处availableSize宽度返回infinity,有人可以建议我如何解决此问题吗?

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

2 个答案:

答案 0 :(得分:1)

添加自定义控件时,StackPanel的子项会抛出相同的异常。 StackPanelOrientation时,Horizontal宽度为无穷大。 HubSection也有类似的情况。

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

答案 1 :(得分:0)

对于涉及ListView且已更改为Horizontal方向的方案,也会出现此错误。 这是因为ListView内部使用StackPanel来排列项目。

通常可以通过在GridGridView而不是StackPanel或{{1}内安排受影响的控件(旨在填充可用水平空间的控件)来避免此问题}