C# 为什么不是';你没打电话给我吗?

C# 为什么不是';你没打电话给我吗?,c#,wpf,mvvm,relaycommand,C#,Wpf,Mvvm,Relaycommand,我的ViewModel中有以下内容: public MyViewModel() { CloseCommend = new RelayCommand(closeWindow); } public RelayCommand CloseCommend; private void closeWindow() { Application.Current.MainWindow.Close(); } XAML: 我看到ViewModel构造函数已初始化,因此绑定应该在那里。但是当我点击关闭按钮

我的ViewModel中有以下内容:

public MyViewModel() {
  CloseCommend = new RelayCommand(closeWindow);
}

public RelayCommand CloseCommend;
private void closeWindow() {
  Application.Current.MainWindow.Close();
}
XAML:



我看到ViewModel构造函数已初始化,因此绑定应该在那里。但是当我点击关闭按钮时,什么也没发生。知道我做错了什么吗?

将字段定义更改为属性定义:

public RelayCommand CloseCommand { get; set; }
原因:

字段通常是不可绑定的。查看

您可以绑定到公共属性、子属性以及 任何公共语言运行库(CLR)对象的索引器。装订 引擎使用CLR反射来获取属性的值。 或者,实现ICustomTypeDescriptor或具有 注册的TypeDescriptionProvider也可以使用绑定引擎

有关如何实现可作为 绑定源,请参见为绑定源实现类 本主题后面将介绍

在“其他特征”部分下:

不能绑定到公共字段


从字段定义更改为特性定义:

public RelayCommand CloseCommand { get; set; }
原因:

字段通常是不可绑定的。查看

您可以绑定到公共属性、子属性以及 任何公共语言运行库(CLR)对象的索引器。装订 引擎使用CLR反射来获取属性的值。 或者,实现ICustomTypeDescriptor或具有 注册的TypeDescriptionProvider也可以使用绑定引擎

有关如何实现可作为 绑定源,请参见为绑定源实现类 本主题后面将介绍

在“其他特征”部分下:

不能绑定到公共字段