2016-09-08 12 views
0

나는 내 뷰 모델에 다음과 같습니다RelayCommand가 호출되지 않는 이유는 무엇입니까?

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

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

XAML :

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

내가 바인딩이 있어야하므로 뷰 모델 생성자가 초기화를 참조하십시오. 그러나 닫기 버튼을 클릭해도 아무런 변화가 없습니다. 내가 뭘 잘못하고 있는거야? 속성 정의 필드 정의에서

답변

4

변경 :

public RelayCommand CloseCommand { get; set; } 

이유 :

필드는 전형적으로, 바인딩 할 수 없습니다. Binding Sources Overview

당신은 어떤 공용 언어 런타임의 공용 속성, 하위 속성뿐만 아니라 인덱서에 바인딩 할 수 있습니다 (CLR) 개체를 확인하십시오. 바인딩 엔진은 CLR 리플렉션을 사용하여 속성 값을 가져옵니다. 또는 ICustomTypeDescriptor를 구현하거나 등록 된 TypeDescriptionProvider가있는 개체는 바인딩 엔진에서 작동합니다.

바인딩 소스로 사용할 수있는 클래스를 구현하는 방법에 대한 자세한 내용은이 항목 뒷부분의 바인딩 소스 의 클래스 구현을 참조하십시오.

당신은 공공 분야에 바인딩 할 수 없습니다 : "섹션 다른 특성"에서

.