数据网格 Xamarin UWP 问题 - HRESULT E_FAIL 已从对 COM 组件的调用中返回
Posted
技术标签:
【中文标题】数据网格 Xamarin UWP 问题 - HRESULT E_FAIL 已从对 COM 组件的调用中返回【英文标题】:Data grid Xamarin UWP issue - HRESULT E_FAIL has been returned from a call to a COM component 【发布时间】:2017-11-15 12:29:42 【问题描述】:我正在使用 Xamarin.Forms.DataGrid 数据网格 nuget 包。当我在 android 手机上运行该应用程序时,它会很好地显示网格和数据。但是,当我尝试在 UWP 上运行完全相同的代码时,它会给我以下异常。
错误信息:
消息“System.Runtime.InteropServices.COMException:对 COM 组件的调用已返回错误 HRESULT E_FAIL。\r\n 在 Windows.UI.Xaml.UIElement.Measure(Size availableSize)\r\n 在Xamarin.Forms.Platform.UWP.VisualElementRenderer
2.MeasureOverride(Size availableSize)\r\n at Windows.UI.Xaml.UIElement.Measure(Size availableSize)\r\n at Xamarin.Forms.Platform.UWP.VisualElementRenderer
2.MeasureOverride(Size availableSize)\r\n at Windows.UI.Xaml.UIElement.Measure(Size availableSize)\r\n at Xamarin.Forms.Plat" 字符串。
如果我注释掉,它会在 UWP 中显示空网格和列
dgReceipts.ItemsSource = tempList;
所以我认为这不是 XAML 问题。
用于测试的设备是三星 Galaxy S6 android 7.0 和 Lumia 640
感谢任何帮助
XAML 代码
<dg:DataGrid x:Name="dgReceipts" RowHeight="70" HeaderHeight="50" BorderColor="#CCCCCC" HeaderBackground="#E0E6F8">
<dg:DataGrid.Columns>
<dg:DataGridColumn Title="ID" Width="1*">
<dg:DataGridColumn.CellTemplate>
<DataTemplate>
<ContentView>
<Label Text="Binding Apar_ID" VerticalOptions="Center"
HorizontalOptions="Center"/>
</ContentView>
</DataTemplate>
</dg:DataGridColumn.CellTemplate>
</dg:DataGridColumn>
</dg:DataGrid.Columns>
<dg:DataGrid.RowsBackgroundColorPalette>
<dg:PaletteCollection>
<Color>#F2F2F2</Color>
<Color>#FFFFFF</Color>
</dg:PaletteCollection>
</dg:DataGrid.RowsBackgroundColorPalette>
</dg:DataGrid>
这是我获取数据列表的地方
//Gets transactions for reports page
public async Task<List<x_Transactions>> GetReportTransactions()
List<x_Transactions> transactions = await database.Table<x_Transactions>
().ToListAsync();
return transactions;
以及它设置为 dg itemssource 的位置
public async Task FillGrid()
List<x_Transactions> tempList;
newList = await App.Database.GetReportTransactions();
dgReceipts.ItemsSource = tempList;
【问题讨论】:
我已将DataGrid
的项目来源设置为dgReceipts.ItemsSource = new List<Item>()
,效果很好。你试过打印tempList
吗?
我可以看到在调试模式下返回了正确的数据量,而且它在 Android 中也显示了正确的数据。
请尝试清理解决方案并卸载应用程序,重新构建项目。
当我尝试在 UWP 上打开页面时仍然给出相同的异常。我会继续尝试修复它,如果我不这样做,我稍后会在此处发布更多代码。
如您所说,这不是 xaml 问题。您是否尝试过更新您的 xamarin.forms 版本?
【参考方案1】:
您不能在Xamarin.UWP
平台中使用嵌套滚动。 DataGrid
组件在内部使用 ListView
。它不能有ScrollView
父级。
【讨论】:
哇。这真的真的真的很臭。您是否知道 github 中的这张票或任何解决此问题的方法?在 ios 中可以正常工作,而 Android 在这里不起作用。在很多情况下,您希望拥有一个完全展开的列表视图,以及滚动的下方的内容。以上是关于数据网格 Xamarin UWP 问题 - HRESULT E_FAIL 已从对 COM 组件的调用中返回的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin 中 ListView 的不同视图形式 Android 和 UWP
Xamarin form-UWP - 在快速滚动列表时显示数据之前的黑色单元格
无法在 UWP 中设置 SQLite 对象 - Xamarin Forms