将View绑定到ViewModel,不带“empty”;构造函数
本文关键字:empty 构造函数 不带 View 绑定 ViewModel | 更新日期: 2023-09-27 18:13:12
继续我之前的问题"更新/使用来自另一个ViewModel的变量",我决定开始使用Caliburn Micro作为框架。
我根据这个指南http://www.mindscapehq.com/blog/index.php/2012/02/01/caliburn-micro-part-4-the-event-aggregator/设置了事件聚合器。
问题是,根据本指南,不应该有一个接受0个参数的"空"构造函数。
嗯,好。
现在的问题是,我不知道如何绑定一个ViewModel到视图现在。在切换到这个框架之前,我使用App.xaml和静态资源作为数据上下文,但我不能再这样做了,因为没有一个空的构造函数。
如何解决这个问题?我已经试着解决这个问题一个小时了,但是我什么也没得到。
一些代码:[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);
}
}
这是"主"视图模型。但是,我不能将其绑定到视图,因此数据不显示…我甚至试图伪造数据…这并不像你想象的那么好。
calburn。Micro使用约定。因此,如果您在ViewModels文件夹中有ShellViewModel
,它将在Views文件夹中查找ShellView
。
我建议看一下示例和文档。一个好的起点是安装Caliburn.Micro。启动 NuGet包(它会拉入Caliburn.Micro),然后编辑App。如文档中所述的Xaml 文件。
本质上,引导程序是一个应用程序资源,它使它被实例化,然后通过配置的IoC容器解析shell视图模型,定位相应的shell视图,进行绑定并使用Caliburn显示它。微窗口管理器。
你也不需要在视图模型基类上实现INotifyPropertyChanged
。这份原稿。Micro包括PropertyChangedBase
型、Screen
型和Conductor
型。