簡體   English   中英

為什么不調用RelayCommand?

[英]Why isn't RelayCommand called?

我的ViewModel中有以下內容:

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

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

XAML:

<Button ... Command="{Binding CloseCommend}"/>

我看到ViewModel構造函數已初始化,因此綁定應該在那里。 但是當我單擊關閉按鈕時,什么也沒有發生。 有什么想法我做錯了嗎?

從字段定義更改為屬性定義:

public RelayCommand CloseCommand { get; set; }

為什么:

字段通常是不可綁定的。 查看綁定源概述

您可以綁定到任何公共語言運行時(CLR)對象的公共屬性,子屬性以及索引器。 綁定引擎使用CLR反射來獲取屬性的值。 或者,實現ICustomTypeDescriptor或具有已注冊TypeDescriptionProvider的對象也可以與綁定引擎一起使用。

有關如何實現可用作綁定源的類的更多信息,請參見本主題后面的為綁定源實現類。

在“ 其他特征 ”部分下:

您不能綁定到公共字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM