如何在ViewModel中使用来自代码的对象

时间:2017-03-02 12:38:18

标签: c# xamarin mvvm xamarin.forms

我有一组页面在我导航之间,我需要传递一些参数,即我的模型类型的一些对象。当我导航到一个页面时,我使用我需要的对象类型的参数设置这个新页面的构造函数,所以该类实现如下:

var queryDate = '2009-11-06',
dateParts = queryDate.match(/(\d+)/g);
realDate = new Date(dateParts[0], dateParts[1] - 1, dateParts[2]);
$('#datepicker').datepicker({ dateFormat: 'yy/mm/dd' }); // format to show
$('#datepicker').datepicker('setDate', realDate);

正如你所看到的,我也在使用MVVM模式,而在我的方面,我有一个变量“Artigo”,我想为其分配我的构造函数所接收的对象:

public partial class ArtigoEdit : ContentPage
{
    EditionsViewModel viewModel;
    public ArtigoEdit(Models.Artigo artigo)
    {
        InitializeComponent();

        BindingContext = viewModel = new EditionsViewModel();

        this.viewModel.Artigo = artigo;
    }
}

问题在于,如果我尝试访问此对象的属性以更改它们的显示方式并绑定到这些新变量,则在页面打开时对象为空,因此不显示变量:

Models.Artigo artigo;
public Models.Artigo Artigo
{
    get { return artigo; }
    set { artigo = value; this.Notify("Artigo"); }
}

这不是正确的做法吗?如果没有,我的替代方案是什么?请注意我的ViewModel都实现了一个string tipoArtigo = ""; public string TipoArtigo { get { return tipoArtigo; } set { if (Artigo != null) { if(Artigo.TipoArtigo == "P") tipoArtigo = "Produto"; else if (Artigo.TipoArtigo == "S") tipoArtigo = "Serviço"; else if (Artigo.TipoArtigo == "O") tipoArtigo = "Outro"; else if (Artigo.TipoArtigo == "I") tipoArtigo = "Imposto"; else tipoArtigo = value; } this.Notify("TipoArtigo"); } } 类,它本身实现了ViewModelBase所以不要担心! :)

1 个答案:

答案 0 :(得分:0)

愚蠢的我,我很抱歉打扰我,我感谢所有试图帮助的人。发生的事情是:我将这些变量绑定到一个条目,但由于某种原因它没有扩展到适合信息的大小,所以虽然它在那里似乎没有...幸运的是我已经注意到它