2016-08-13 9 views
0

Xamarin.Forms xamlページにListViewCachingStrategy=RecycleElementを実装しようとしていましたが、スクロールするまですべてが正しく表示されます。次に、INativeElementViewを実装する必要があるという例外が表示されます。私は各ネイティブプラットフォームのUIデザイナーでビューを設計し、それぞれにカスタムレンダラーを用意しました。 RecycleElementの代わりにRetainElementを使用した場合、このクラッシュは発生しません。任意のアイデアや提案?INativeElementViewはどのように実装されていますか?

編集:私がデザイナーで作成したビューはFeeViewCellと呼ばれ、正しく理解すれば、INativeElementViewは(FeeViewCell.cs内で)実装されるはずです。私の問題は、要素へのキャストが、指定されたキャストが有効でないことを示すSystem.InvalidCastExceptionを返すようになったことです。ここでINativeElementViewを実装する私のコードは次のとおりです。

public Element Element { get { return this.ToView() as Element; } } 私もXamarinフォーラムhere.

答えて

0

上の問題としてこれを持ってINativeNativeViewインタフェースは、カスタムセルクラスに実装する必要があります。 iOSの私の例では、カスタムレンダラの私はのpclから来る項目を提供しています。

public Element Element 
     { 
      get { return new FeeCell(); } 
     } 
:それはまた、これを行うために働く

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 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クラスの一部であるの一部です。

関連する問題