は、私はあなたがいくつかのオプションを持っていると信じて:
共有永続ストレージ
あなたが読んで、同じショッピングを修正するために使用することができるなどSQLiteかRealmなどのストレージ/キャッシング・ソリューションを使用している場合ページ間のカートデータ。その後、ビューのライフサイクルイベント(OnResume
[Android]またはViewWillAppear
[iOS])を使用して、キャッシュから最新のものを取得できます。
ショッピングカートのデータサイズが小さい場合は、MvvmCross Settings Pluginに読み書きすることができます。あなただけが唯一のint型、文字列、boolsなどの基本的なタイプを保存することができますようにオブジェクトをシリアライズとデシリアライズする必要がなど
依存性注入共有インスタンス
あなたは共有を使用して経由してメモリキャッシュに作成することができます複数のViewModel間で共有することができます。このクラスのプロパティは、さまざまなビューに直接バインドできます。リストを変更すると、リストにバインドされているすべてのビューが更新されます。注意すべき点は、このインスタンスクラスが占有するメモリ領域が必要な場合は、手動でクリーンアップを処理する必要があることです。
例:
例モデル
public class ItemInfo
{
public int Id { get; set; }
public string Name { get; set; }
public double Price { get; set; }
}
共有クラス・インスタンスおよびインターフェイス
public interface ISharedShoppingCart
{
MvxObservableCollection<ItemInfo> ShoppingCartItems { get; set; }
}
public class SharedShoppingCart : MvxNotifyPropertyChanged, ISharedShoppingCart
{
MvxObservableCollection<ItemInfo> _shoppingCartItems;
public MvxObservableCollection<ItemInfo> ShoppingCartItems
{
get { return _shoppingCartItems; }
set { SetProperty(ref _shoppingCartItems, value); }
}
}
が
public class App : MvxApplication
{
public override void Initialize()
{
/* Other registerations*/
Mvx.LazyConstructAndRegisterSingleton<ISharedShoppingCart, SharedShoppingCart>();
}
}
012クラスとインターフェイスを登録することを確認します
共有のviewmodelsでの使用例
public class ShopingCartViewModel : MvxViewModel
{
readonly ISharedShoppingCart _sharedShoppingChart;
public ShopingCartViewModel(ISharedShoppingCart sharedShoppingChart)
{
_sharedShoppingChart = sharedShoppingChart;
}
public MvxObservableCollection<ItemInfo> ShoppingCartItems
{
get { return _sharedShoppingChart.ShoppingCartItems; }
set { _sharedShoppingChart.ShoppingCartItems = value; }
}
}
public class ItemInfoViewModel : MvxViewModel
{
readonly ISharedShoppingCart _sharedShoppingCart;
public ItemInfoViewModel(ISharedShoppingCart sharedShoppingCart)
{
_sharedShoppingCart = sharedShoppingCart;
}
void RemoveItemFromCart(int id)
{
_sharedShoppingCart.ShoppingCartItems
.Remove(_sharedShoppingCart.ShoppingCartItems.Single(x => x.Id == id));
}
}
パブ/サブ
あなたはMvvmCross Messenger Pluginを使用して、ショッピングカートのViewModelに戻っmessagesを送信することができます。
代わりに[Messenger](https://mvvmcross.com/docs/messenger)プラグインを見てください –