繼續我之前的問題「Updating/using a variable from another ViewModel」,我決定開始使用Caliburn Micro作爲框架。將視圖綁定到ViewModel,沒有「空」構造函數
根據本指南http://www.mindscapehq.com/blog/index.php/2012/02/01/caliburn-micro-part-4-the-event-aggregator/設置了Event Aggerator。
問題是,根據本指南,不應該有一個「空」的構造函數,它需要0個參數。
好,很好。
現在的問題是,我不知道如何將ViewModel綁定到視圖。 在切換到這個框架之前,我使用App.xaml和Static資源作爲datacontext,但是我不能再做它,因爲沒有空構造函數。
我該如何解決這個問題?我一直在試圖解決它現在一個小時,我已經完全沒有達到。
一些代碼:
[Export(typeof(ViewModelBase))]
public class ViewModelBase : INotifyPropertyChanged, IHandle<updateEvent>
{
private Class _studclass;
public AddStudentViewModel NewModel { get; private set; }
public Class StudentClass
{
get { return _studclass; }
set
{
_studclass = value;
NotifyPropertyChanged("StudentClass");
}
}
[ImportingConstructor]
public ViewModelBase(AddStudentViewModel newModel, IEventAggregator events)
{
StudentClass = new Class();
NewModel = newModel;
Student asaf = new Student();
asaf.Name = "Asaf";
StudentClass.StudentList.Add(asaf);
events.Subscribe(this);
}
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(string PropertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(PropertyName));
}
}
public void Handle(updateEvent msg)
{
StudentClass.StudentList.Add(msg.Student);
}
}
這是 「主」 視圖模型。然而,我不能將它綁定到一個視圖,所以數據不會顯示......我甚至試圖設置一個假數據......這並不如你可能猜到的那麼好。
另外值得注意的是INPC事件編組到'PropertyChangedBase'中的UI線程 - 這是一個微小但非常有用的功能 – Charleh 2013-05-13 00:25:03