我在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>
答案 0 :(得分:1)
添加自定义控件时,StackPanel
的子项会抛出相同的异常。 StackPanel
为Orientation
时,Horizontal
宽度为无穷大。 HubSection
也有类似的情况。
因此,在这种情况下,必须为控件分配默认(特定)宽度,然后调用InvalidateMeasure()
来解决此问题。
答案 1 :(得分:0)
对于涉及ListView
且已更改为Horizontal
方向的方案,也会出现此错误。
这是因为ListView
内部使用StackPanel
来排列项目。
通常可以通过在Grid
或GridView
而不是StackPanel
或{{1}内安排受影响的控件(旨在填充可用水平空间的控件)来避免此问题}