繁体   English   中英

在没有“空”构造函数的情况下将视图绑定到ViewModel

[英]Binding a View to a ViewModel, without an “empty” constructor

继续上一个问题“ 更新/使用另一个ViewModel中的变量 ”,我决定开始使用Caliburn Micro作为框架。

我根据此指南http://www.mindscapehq.com/blog/index.php/2012/02/01/caliburn-micro-part-4-the-event-aggregator/设置了事件汇总器。

事实是,根据本指南,不应有带有0个参数的“空”构造函数。

好吧

现在的问题是,我现在不知道如何将ViewModel绑定到View。 在切换到此框架之前,我使用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);
    }
}

这就是“主要”视图模型。 但是,我无法将其绑定到视图,因此数据不会显示...我什至试图设置一个伪造的数据...效果不佳,您可能已经猜到了。

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

我建议您看一下样本和文档 一个不错的起点是安装Caliburn.Micro.Start NuGet软件包(将其导入Caliburn.Micro),然后按照文档中的说明编辑App.xaml文件。

从本质上讲,引导程序是导致其实例化的应用程序资源,该资源随后通过配置的IoC容器解析您的外壳视图模型,找到相应的外壳视图,进行绑定并使用Caliburn.Micro窗口管理器显示它。

您也不需要在视图模型基类上实现INotifyPropertyChanged Caliburn.Micro包括PropertyChangedBase类型, Screen类型和Conductor类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM