C# 将视图绑定到ViewModel,但不带“";“空的”;建造师
在继续我之前的问题“”时,我决定开始使用Caliburn Micro作为框架 我根据本指南设置了事件聚合器 问题是,根据本指南,不应该有一个接受0个参数的“空”构造函数 好吧,很好 现在的问题是,我现在不知道如何将ViewModel绑定到视图。 在切换到这个框架之前,我使用App.xaml和静态资源作为datacontext,但我不能再这样做了,因为没有空的构造函数 我如何解决这个问题?我已经试着解决这个问题一个小时了,但我什么也没得到 一些代码:C# 将视图绑定到ViewModel,但不带“";“空的”;建造师,c#,wpf,mvvm,caliburn.micro,C#,Wpf,Mvvm,Caliburn.micro,在继续我之前的问题“”时,我决定开始使用Caliburn Micro作为框架 我根据本指南设置了事件聚合器 问题是,根据本指南,不应该有一个接受0个参数的“空”构造函数 好吧,很好 现在的问题是,我现在不知道如何将ViewModel绑定到视图。 在切换到这个框架之前,我使用App.xaml和静态资源作为datacontext,但我不能再这样做了,因为没有空的构造函数 我如何解决这个问题?我已经试着解决这个问题一个小时了,但我什么也没得到 一些代码: [Export(typeof(ViewMode
[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);
}
}
[导出(typeof(ViewModelBase))]
公共类ViewModelBase:INotifyPropertyChanged,IHandle
{
私人班(学生班),;
public AddStudentViewModel NewModel{get;private set;}
公共课学生课
{
获取{return\u studclass;}
设置
{
_等级=价值;
NotifyPropertyChanged(“StudentClass”);
}
}
[导入构造函数]
公共视图模型库(添加StudentViewModel新模型、IEventAggregator事件)
{
StudentClass=新类();
NewModel=NewModel;
学生asaf=新学生();
asaf.Name=“asaf”;
StudentClass.StudentList.Add(asaf);
活动。订阅(本);
}
公共事件属性更改事件处理程序属性更改;
受保护的void NotifyPropertyChanged(字符串PropertyName)
{
if(PropertyChanged!=null)
{
PropertyChanged(这是新的PropertyChangedEventArgs(PropertyName));
}
}
公共无效句柄(updateEvent消息)
{
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包括属性更改数据库
类型、屏幕
类型和导体
类型 还值得注意的是,INPC事件被编组到PropertyChangedBase
中的UI线程,这是一个很小但非常有用的功能