簡體   English   中英

如何使用C#WPF?

[英]How to use C# WPF?

對於我的學校作業,我必須為一家旅館預訂系統。 問題是我必須在沒有UI的情況下編寫代碼(以前從未這樣做)。 我必須稍后添加用戶界面。 每個用戶界面都應該可以與我的代碼一起使用。

現在我上了一個Secretary班, Secretary可以Reservation 我在班級Secretary有這種方法:

public void CheckIn()
        {
            Reservation reservation = new Reservation();
            reservation.ReservationDate1 = //info from a textbox
        }

現在我知道我應該在UI就緒時連接一切,但是什么是告訴我的代碼當文本框還不存在時他應該從文本框中獲取信息的最佳方法是什么???

我建議你先讀這篇

現在,關於您必須執行的操作,然后您首先需要對數據建模

public class Reservation
{
    public DateTime Date{get;set;}
    public string Name{get;set;}

    public void Save(){/*Copy entry to DB, webservice, file, etc*/}
    public void Delete(){/*delete entry from DB, webservice, file, etc*/}
    //ect

}

如您所見,現在您有了一份預訂所需的清單,以及可以保留您的數據的功能

接下來,您需要一個ViewModel

public class ReservationViewModel:INotifyPropertyCHanged
{
    public Reservation Reservation{get;set;} //Link to model
    private DateTime _Date;

    public DateTime Date
    {
        get { return _Date; }
        set { SetProperty(ref _Date, value); }
    }
    private string _Name;

    public string Name
    {
        get { return _Name; }
        set { SetProperty(ref _Name, value); }
    }
    public void SetProperty<T>(ref T store, T value,[CallerMemberName] string name = null)
    {
        store = value;
        if(PropertyChanged!=null)PropertyChanged(this,new PropertyChangedArgs(name);
    }
    public void Save(){/*validate, copy over model values call models save*/}
    public void Cancel(){/*change VM values back to Model values*/}
    public void Delete(){/*validate, call models delete*/}
    //ect
}

在這一點上,您可以按照定義的數據和行為停止操作,盡管我建議添加一個測試項目來運行您的代碼並檢查其是否有效

當您進入View時,只需將其綁定到ViewModel上,剩下的就為您完成了

<TextBox Text={Binding Name}/>

您可以將MVVM與ViewModel一起使用,但是如果僅希望在設計UI時准備接受輸入的方法,則可以使Checkin()接受字符串參數,使其為Checkin(string value)並將值分配給ReservationDate1

        public void CheckIn(string val)
        {
            Reservation reservation = new Reservation();
            reservation.ReservationDate1 = val;
        }

這是保持邏輯和UI良好且獨立的練習。 稍微緊密耦合但可行的是:

        public void CheckIn(TextBox tb)
        {
            Reservation reservation = new Reservation();
            reservation.ReservationDate1 = tb.Text;
        }

暫無
暫無

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

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