DataGrid绑定崩溃了Xamarin上的UWP应用程序

时间:2017-01-27 11:40:53

标签: c# xamarin datagrid uwp

我正在使用共享定义使用Xamarin创建应用程序,我的应用程序应该在Android上运行并作为UWP应用程序运行。此应用程序需要显示具有可绑定值的DataGrid,为此我使用Xamarin.Forms.DataGrid。我已经按照DataGrid的存储库中显示的示例进行了操作,并且它在Android上运行良好,但是当我尝试作为UWP应用程序运行时,我遇到了问题。问题是,当我作为带有填充List的UWP应用程序运行并尝试在DataGrid上绑定此列表时,应用程序崩溃,显示此异常:

"System.Runtime.InteropServices.COMException: Error HRESULT E_FAIL has been returned from a call to a COM component.
at Windows.UI.Xaml.UIElement.Measure(Size availableSize)
at Xamarin.Forms.Platform.UWP.VisualElementRenderer`2.MeasureOverride(Size availableSize)
at Windows.UI.Xaml.UIElement.Measure(Size availableSize)
at Xamarin.Forms.Platform.UWP.VisualElementRenderer`2.MeasureOverride(Size availableSize)
at Windows.UI.Xaml.UIElement.Measure(Size availableSize)
at Xamarin.Forms.Plat"

正如我所说,此异常仅发生在UWP上,并且仅在填充此List时发生。列表以这种方式创建:

private List<TableValue> _tableValues;

public List<TableValue> TableValues
{
   get { return _tableValues; }
   set
   {
      TableValues= value;
      OnPropertyChanged(nameof(TableValues));
   }
}

private List<TableValue> CreateTableValues()
{
    return new List<TableValue>{
        new TableValue{Val1="", Val2="", Val3="", Val4="", Val5="", Val6="", Val7=""}
    };
}

public async Task PopulateItems()
{
    _tableValues = CreateTableValues();
    UpdateProperty();
}

此列表是在View的MVVM类中创建的。 DataGrid元素以这种方式在View中创建:

private ScrollView CreateTable()
{
   table = new DataGrid();
   table.Columns.Clear();
   table.Columns.AddRange(CreateColumns());
   table.SelectionEnabled = true;
   table.BackgroundColor = Color.White;
   table.SetBinding(DataGrid.ItemsSourceProperty, new Binding("TableValues"));
   table.HeaderBackground = Color.FromHex("#D4D0C8");
   table.HeaderFontSize = 18;
   table.HeaderTextColor = Color.FromHex("#08098F");

   StackLayout tableStack = new StackLayout
   {
       BackgroundColor = Color.White,
       HeightRequest = 850,
       VerticalOptions = LayoutOptions.FillAndExpand
   };
   tableStack.Children.Add(table);

   var scroll = new ScrollView
   {
       BackgroundColor = Color.White,
       Margin = new Thickness(5, 5, 5, 5),
       Content = tableStack,
       Orientation = ScrollOrientation.Horizontal,
       HorizontalOptions = LayoutOptions.FillAndExpand,
       VerticalOptions = LayoutOptions.FillAndExpand
   };

   return scroll;
}

我搜索了这个问题的可能解决方案,但是我无法找到任何解决方案,因为在Xamarin中使用这个DataGrid的问题很少见。

1 个答案:

答案 0 :(得分:0)

在Xamarin.Forms.UWP中,不支持在ScrollView内嵌套ListView。这就是你崩溃的原因。有关bugzilla的更多信息,请参阅。