2016-08-13 58 views
0

我试图在Xamarin.Forms xaml页面中实现ListViewCachingStrategy=RecycleElement,并且一切正常显示,直到我尝试滚动。然后我得到一个异常,说INativeElementView需要实现。我在每个本地平台的UI设计器中设计了视图,并为每个平台都设置了自定义的渲染器。如果我使用RetainElement而不是RecycleElement,则不会发生此崩溃。任何想法或建议?INativeElementView应该如何实现?

编辑:我在设计器中创建的视图名为FeeViewCell,如果我理解它正确的位置,则应该实现INativeElementView(在FeeViewCell.cs中)。我现在的问题是,转换为元素返回一个System.InvalidCastException,说明指定的转换无效。这里是我的代码实现INativeElementView

public Element Element { get { return this.ToView() as Element; } } 我也有这个作为对Xamarin论坛here.

回答

0

INativeNativeView接口需要的自定义单元格类实现的问题。在iOS中的示例中,我在自定义渲染器中提供了来自pcl的项目,在我的示例中为FeeCell。 这是我的自定义渲染

public class FeeCellRenderer : ViewCellRenderer 
    { 
     public override UIKit.UITableViewCell GetCell(Cell item, UIKit.UITableViewCell reusableCell, UIKit.UITableView tv) 
     { 
      var x = (FeeCell)item; 
      //Do whatever you need to here. 
     } 
     } 

这是我的自定义UI类的一部分的一部分:

public partial class FeeViewCell : UITableViewCell, INativeElementView 
{ 
    public static readonly NSString Key = new NSString(nameof(FeeViewCell)); 
    Element _element; 
public Element Element 
     { 
      get { return _element; } 
      set { _element = value; } 
     } 
} 

它也能做到这一点:

public Element Element 
     { 
      get { return new FeeCell(); } 
     }