第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

WPF、MVVM:創(chuàng)建新視圖并將參數(shù)傳遞給它的 ViewModel

WPF、MVVM:創(chuàng)建新視圖并將參數(shù)傳遞給它的 ViewModel

C#
守候你守候我 2021-06-02 14:55:44
我沒有在任何地方找到這個(gè)。目前我正在制作一個(gè) WPF 應(yīng)用程序,但遇到了一個(gè)問題。我需要一頁(yè),但數(shù)據(jù)應(yīng)該不同,具體取決于哪個(gè)按鈕調(diào)用了頁(yè)面。如果不嘗試堅(jiān)持使用 MVVM,那會(huì)很容易。我已經(jīng)有一個(gè)按鈕可以將所需的數(shù)據(jù)傳遞給頁(yè)面 cs 文件,但我不知道如何將該數(shù)據(jù)傳遞給 ViewModel。詳細(xì)視圖頁(yè)面.xaml.cs:namespace unnamed{    public partial class DetailedViewPage : BasePage<DetailedViewViewModel>    {            public DetailedViewPage(string position)        {                InitializeComponent();        }    }    //I'm using similar method to create new View    private void CreateNewWindow()    {        var MainWindow = (MainWindow) Application.Current.MainWindow;        var MWViewModel = (WindowViewModel) MainWindow.DataContext;        MWViewModel.CurrentPage = new DetailedViewPage("top");    }}BasePage.cs:public class BasePage<VM> : Page        where VM : BaseViewModel, new()    {        private VM mViewModel;        public VM ViewModel        {            get { return ViewModel; }            set            {                if (mViewModel == value)                    return;                mViewModel = value;                this.DataContext = mViewModel;            }        }        public BasePage()        {            this.Resources = ((MainWindow)Application.Current.MainWindow).Resources;            this.ViewModel = new VM();        }    }詳細(xì)視圖視圖模型.cs:namespace unnamed{    public class DetailedViewViewModel : BaseViewModel    {            public string PossitionShown { get; set; }        public DetailedViewViewModel()        {                        }        }}所以我的目標(biāo)是將位置變量從頁(yè)面 cs 文件獲取到 ViewModel 并分配給PossitionShown.
查看完整描述

1 回答

?
藍(lán)山帝景

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊

您的視圖 ( DetailedViewPage) 有一個(gè)DataContext,即DetailedViewViewModel。


DataContext可以通過默認(rèn)構(gòu)造函數(shù)(在 XAML 中輸入時(shí))自動(dòng)創(chuàng)建,也可以在構(gòu)造函數(shù)中創(chuàng)建。基本上,在創(chuàng)建視圖之后,我們可以簡(jiǎn)單地為其設(shè)置值。


public DetailedViewPage(string position)

{

    InitializeComponent();


    //optional line, if not set in XAML

    this.DataContext = new DetailedViewViewModel();


    var VM = (this.DataContext as DetailedViewModel);

    VM.PossitionShown = position;

}

編輯: 添加代碼以在 ViewModel 構(gòu)造中傳遞變量。


public DetailedViewPage(string position)

{

    InitializeComponent();

    //Note this line is not "optional" anymore, You must pass the value as a variable.

    this.DataContext = new DetailedViewViewModel(position);

}


public class DetailedViewViewModel : BaseViewModel

{

    public string PossitionShown { get; set; }

    public DetailedViewViewModel(string position)

    {

        PossitionShown = position;

    }

}

附帶說明一下,這并不完全是MVVM approach,因?yàn)槟呀?jīng)通過 傳遞了一些參數(shù)View,并且View正在考慮存在某種類型的ViewModel.


查看完整回答
反對(duì) 回復(fù) 2021-06-05
  • 1 回答
  • 0 關(guān)注
  • 512 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)