インターフェースが pcl プロファイルに存在しない場合、転送する 1 つの方法は、インターフェースを pcl にコピーし、ValueConverter を使用してインターフェースをラップし、ネイティブの同等のものに適合させることです。
これは、小さなインターフェイスでうまく機能します。これは、MvvmCross がIValueConverter
それ自体を移植可能なインターフェイスにする方法に似ています。
したがって、はい、ViewModel を PCL に実装し、ネイティブ UI がアダプタを介して移植性のないインターフェイスを使用することは可能です。
ただし、より大きなオブジェクトをマーシャリング/適応する必要がある場合、上記のプロセスは少し面倒になる可能性がありISupportIncrementalLoading
ます。IEnumerable
ICollection
この場合、その「ViewModel」を非 PCL コードに移動する方が簡単な場合があります。
通常、コレクションを非 PCL コードに入れるだけでこれを行います。たとえば、次のようにします。
ポータブルIMyIncrementalCollectionFactory
とIMyIncrementalCollection<T>
インターフェースを次のように宣言します。
public interface IMyIncrementalCollectionFactory
{
IMyIncrementalCollection<T> Create();
}
public interface IMyIncrementalCollection<T>
{
event EventHandler<RequireMore<T>> OnRequireMore;
void SetHasMore(bool value);
}
呼び出しをイベントIMyIncrementalCollection<T>
にマップするコレクション クラスを使用して WinRT に実装するLoadMoreItemsAsync<T>
OnRequireMore
IMyIncrementalCollectionFactory
上記のコレクションのインスタンスを返すクラスを使用して WinRT に実装する
IMyIncrementalCollectionFactory
コレクションの作成に使用するページ レベルの ViewModel を記述します。
これと同じプロセスで、「さらに読み込む」ロジック自体を共有コードに保持します。