繁体   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