MVVM传递绑定

时间:2017-02-21 01:22:23

标签: c# mvvm

如何创建一个视图模型,在某些情况下,其中一个属性引用静态对象,而在其他情况下,它引用一个实例并仍然保留绑定?

让我们说我希望我的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;
    }
}

现在,我的问题是我如何传递Cart的静态实例,并仍允许从View到Viewmodel的绑定工作。

编辑:

我有一个静态DataAccess类,我在其中声明了Cart的单例/静态实例:

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

我用这个来从应用程序的任何地方填充购物车。

我可以创建直接绑定到此对象的视图。

但是,我宁愿转到一种模式,我可以从服务器中处理Cart的序列化实例,如下所示:

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

适用于vm.Cart未更改的情况。但是,当Cart是DataAccess.UserCart并且我调用DataAccess.UserCart.AddItem(New Item())时,VM不知道对此数据的更改。

1 个答案:

答案 0 :(得分:0)

我真的在想这里。我不确定我的Cart类是模型还是视图模型或其他什么东西,我试图将其纳入其中一个但我真正需要的是使ShoppingCartViewModel知道购物车中的更改的事件!