我试图在Xamarin.Forms xaml页面中实现ListViewCachingStrategy=RecycleElement
,所有内容都正确显示,直到我尝试滚动。然后我得到一个异常,说需要实现INativeElementView。我在每个原生平台的ui设计器中设计了视图,并为每个设计器都有一个自定义渲染器。如果我使用RetainElement
而不是RecycleElement
,则不会发生此崩溃。有什么想法或建议吗?
编辑:我在设计器中创建的视图称为FeeViewCell
,如果我理解的话,那就是应该实现INativeElementView的地方(在FeeViewCell.cs中)。我现在的问题是,转换为元素会返回一个System.InvalidCastException,表示指定的强制转换无效。这是我的代码实现INativeElementView
:
public Element Element
{
get
{
return this.ToView() as Element;
}
}
我在Xamarin论坛here.
答案 0 :(得分: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(); }
}