2017-02-21 9 views
0

Как создать модель представления, которая в некоторых случаях относится к статическому объекту, а в других относится к экземпляру и сохраняет привязки?MVVM Pass-Through Binding

Позволяет сказать, что я хотел, чтобы мой ViewModel для «ShoppingCartPage», чтобы выглядеть следующим образом:

public class ShoppingCartViewModel 
{ 
    public ShoppingCart Cart { get; set; } 
    public void AddItem(Item item); 
    public void RemoveItem(Item item); 
    public ShoppingCartViewModel(ShoppingCart cart) 
    { 
     Cart = cart; 
    } 
} 

Теперь мой вопрос, как я могу передать в статическом экземпляре корзины и все еще позволяем привязки из View в ViewModel работать.

Edit:

У меня есть статический класс DATAACCESS, в котором я объявляю одноплодный/статический экземпляр Корзины:

public static class DataAccess 
{ 
    public static Cart UserCart = new Cart(); 
    ... 
} 

Я использую это, чтобы заполнить тележку из любого места в приложении.

Я могу создать представление, которое связывается непосредственно с этим объектом.

Однако я предпочел бы перейти к образцу, в котором я могу обрабатывать сериализованные экземпляры Корзина с сервера так:

public class ShoppingCartPage 
{ 
    public ShoppingCartPage(ShoppingCartViewModel vm) 
    { 
     //psuedo code 
     Label1.Bind(SomeProperty, vm.Cart); 
    } 
} 

Это работает в случаях, когда vm.Cart не изменилась. Однако, когда Cart является DataAccess.UserCart, и я вызываю DataAccess.UserCart.AddItem (Новый элемент()), VM не знает об изменениях этих данных.

+0

_ «как я могу передать статический экземпляр Cart» _ - укажите «статический экземпляр». Это звучит как оксюморон для меня. Также, пожалуйста, объясните, что означает «работа». Исправьте свой вопрос, чтобы он включал хороший [mcve], четко показывающий, что вы пробовали и/или хотите сделать код. Объясните _precisely_, что этот код делает сейчас, и что вы хотите, чтобы он делал вместо этого. Теперь от вашего поста совсем не ясно, что именно вы хотели бы сделать, и какое поведение вы хотите от кода. –

ответ

0

Я действительно задумался над этим. Я не был уверен, что мой класс Cart был моделью или моделью взгляда или чем-то еще, и я пытался подгонять его в один из них, но все, что мне действительно нужно, это события, чтобы сделать ShoppingCartViewModel осведомленным об изменениях в Cart!