由于 Xamarin UWP 项目中的 Xamarin.CarouselView,UWP 应用程序崩溃

Posted

技术标签:

【中文标题】由于 Xamarin UWP 项目中的 Xamarin.CarouselView,UWP 应用程序崩溃【英文标题】:UWP app is crashing due to Xamarin.CarouselView in Xamarin UWP project 【发布时间】:2020-01-26 10:00:23 【问题描述】:

以下是错误:

System.ArgumentException: Delegate to an instance method cannot have null 'this'.
   at System.MulticastDelegate.ThrowNullThisInDelegateToInstance()
   at CarouselView.FormsPlugin.UWP.CarouselViewRenderer.FlipView_Loaded(Object sender, RoutedEventArgs e)

【问题讨论】:

可能重复:***.com/questions/3752824/… Delegate to an instance method cannot have null 'this'的可能重复 【参考方案1】:

这是在库问题中注册的 CarouselView 控件 UWP 渲染器中的错误:https://github.com/alexrainman/CarouselView/issues/526。

在我的情况下,我在一个管理应用程序中遇到了这个崩溃,这是我独家开发的解决方案的一部分。让我对此感到好奇的是,最终用户应用程序不存在这个问题。所有解决方案都是由我编写的,使用相同的技术、库等。

所以我开始分解管理应用程序,通过将其与最终用户应用程序代码进行比较来了解崩溃。我得出的结论是,在 OnAppearing 上通过明确调用设置为控件的 ItemSource 的列表导致崩溃。

public ProductPage(string productId)

    InitializeComponent();
    
    this.productId = productId;
    
    this.products = new ObservableCollection<ProductGalleryDTO>();
    this.ProductGallery.ItemsSource = this.products;

    
protected override void OnAppearing()

    base.OnAppearing();

    // Note: this causes the issue in my case
    //this.products.Clear();
    
    this.GetProductDetails();

您的崩溃的重现步骤可能不同,因为这应该是 UWP 渲染器无法处理的一些意外状态。

此外,几年前我开始使用这个库,当时 Xamarin.Forms 中还没有类似的控件。现在我们有 CarouselView:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/carouselview/

【讨论】:

以上是关于由于 Xamarin UWP 项目中的 Xamarin.CarouselView,UWP 应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

如何在 xamarin.UWP 中的 Viewcell 项目选择上设置自己的颜色?

Xamarin Android 使用其他语言的类库

Xamarin Forms中的Android,IOS和UWP版本

如何更改 Xamarin UWP 应用名称

Xamarin Forms 便携式项目:UWP 错误 -2147467259

无法在 Xamarin Forms 中启动 UWP 项目