INativeElementView 应该如何实现?
How is INativeElementView supposed to be implemented?
我试图在 Xamarin.Forms xaml 页面中实现 ListViewCachingStrategy=RecycleElement
,并且在我尝试滚动之前一切都正确显示。然后我得到一个异常,表明需要实施 INativeElementView。我在每个本机平台的 ui 设计器中设计了视图,并为每个视图都有一个自定义渲染器。如果我使用 RetainElement
而不是 RecycleElement
,则不会发生此崩溃。有什么想法或建议吗?
编辑:我在设计器中创建的视图称为 FeeViewCell
,如果我理解正确的话,那是应该实现 INativeElementView 的地方(在 FeeViewCell.cs 中)。我现在的问题是,将 returns 转换为 System.InvalidCastException 表示指定的转换无效。这是我的代码实现 INativeElementView
:
public Element Element
{
get
{
return this.ToView() as Element;
}
}
我在 Xamarin 论坛上也有这个问题 here.
INativeNativeView
接口需要在自定义单元格 class 上实现。在我的 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 class:
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(); }
}
我试图在 Xamarin.Forms xaml 页面中实现 ListViewCachingStrategy=RecycleElement
,并且在我尝试滚动之前一切都正确显示。然后我得到一个异常,表明需要实施 INativeElementView。我在每个本机平台的 ui 设计器中设计了视图,并为每个视图都有一个自定义渲染器。如果我使用 RetainElement
而不是 RecycleElement
,则不会发生此崩溃。有什么想法或建议吗?
编辑:我在设计器中创建的视图称为 FeeViewCell
,如果我理解正确的话,那是应该实现 INativeElementView 的地方(在 FeeViewCell.cs 中)。我现在的问题是,将 returns 转换为 System.InvalidCastException 表示指定的转换无效。这是我的代码实现 INativeElementView
:
public Element Element
{
get
{
return this.ToView() as Element;
}
}
我在 Xamarin 论坛上也有这个问题 here.
INativeNativeView
接口需要在自定义单元格 class 上实现。在我的 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 class:
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(); }
}