簡體   English   中英

如何在ViewModel中使用來自后面代碼的對象

[英]How to use an object in ViewModel coming from code behind

我有一組頁面,在這些頁面之間進行導航,並在這些頁面之間傳遞一些參數,即模型類型的某些對象。 當我導航到頁面時,使用需要的對象類型的參數來設置此新頁面的構造函數,因此該類的實現如下:

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

        BindingContext = viewModel = new EditionsViewModel();

        this.viewModel.Artigo = artigo;
    }
}

如您所見,我也在使用MVVM模式,在它的一邊,我有一個變量“ Artigo”,我想為其分配構造函數接收到的對象:

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

問題是,如果我嘗試訪問此對象的屬性以更改它們的顯示方式並綁定到這些新變量,則在頁面打開時該對象為null,因此不顯示變量:

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"); 
    }
}

這不是正確的方法嗎? 如果沒有,我有什么選擇? 請注意,我的ViewModels都實現了一個ViewModelBase類,該類本身實現了INotifyPropertyChanged因此不必擔心! :)

愚蠢的我,很抱歉打擾您,也感謝所有嘗試提供幫助的人。 發生的事情是:我將這些變量綁定到一個Entry,但是由於某種原因,它沒有擴展到適合信息的大小,因此盡管它在那里,但似乎並沒有...幸運的是,我注意到了它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM