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
的子控件时,抛出相同的异常。因为当 Orientation
为 Horizontal
时 StackPanel
宽度为无穷大。 HubSection
也有类似的场景
所以在这种情况下必须为控件分配默认(特定)宽度,然后调用 InvalidateMeasure()
来解决此问题。
此错误也会出现在涉及 ListView
已更改为 Horizontal
方向的场景中。
这是因为 ListView
内部使用 StackPanel
来排列项目。
通常,可以通过在 Grid
或 GridView
内而不是 [=13= 内安排受影响的控件(旨在填充可用水平 space 的控件)来避免此问题] 或 ListView
我在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
的子控件时,抛出相同的异常。因为当 Orientation
为 Horizontal
时 StackPanel
宽度为无穷大。 HubSection
也有类似的场景
所以在这种情况下必须为控件分配默认(特定)宽度,然后调用 InvalidateMeasure()
来解决此问题。
此错误也会出现在涉及 ListView
已更改为 Horizontal
方向的场景中。
这是因为 ListView
内部使用 StackPanel
来排列项目。
通常,可以通过在 Grid
或 GridView
内而不是 [=13= 内安排受影响的控件(旨在填充可用水平 space 的控件)来避免此问题] 或 ListView