将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);
    }
}

这是"主"视图模型。但是,我不能将其绑定到视图,因此数据不显示…我甚至试图伪造数据…这并不像你想象的那么好。

将View绑定到ViewModel,不带“empty”;构造函数

calburn。Micro使用约定。因此,如果您在ViewModels文件夹中有ShellViewModel,它将在Views文件夹中查找ShellView

我建议看一下示例和文档。一个好的起点是安装Caliburn.Micro。启动 NuGet包(它会拉入Caliburn.Micro),然后编辑App。如文档中所述的Xaml 文件。

本质上,引导程序是一个应用程序资源,它使它被实例化,然后通过配置的IoC容器解析shell视图模型,定位相应的shell视图,进行绑定并使用Caliburn显示它。微窗口管理器。

你也不需要在视图模型基类上实现INotifyPropertyChanged。这份原稿。Micro包括PropertyChangedBase型、Screen型和Conductor型。