문제

어떻게 사용할 수 있습니까? RelayCommand WPF에서?

도움이 되었습니까?

해결책

릴레이 명령은 WPF에 존재하지 않으며, 정의 된 후에 눈에 띄게 제기 된 외부 클래스 일뿐입니다. 이 MSDN 기사. 사용하려면 직접 써야합니다.

그렇지 않으면 WPF 툴킷의 대의원 명령을받을 수 있습니다. 여기 릴레이 커뮤니케이션 코드에 비해 약간의 추가 기능이 있습니다.


아,이 답변을 입력하는 동안 질문이 바뀌 었습니다. 위에서 정의 된대로 릴레이 공무원을 사용한다고 가정하면 한두 명의 대표단과 함께 제공해야합니다. 하나 또는 두 명의 대표단, 명령이 실행될 유효한 상태인지 여부를 결정하는 부울을 반환하고 아무것도 반환하지 않고 실제로 실행되는 두 번째 대의원을 반환해야합니다. 명령. "Canrun"Delegate를 제공하지 않으면 명령은 항상 유효한 상태에 있다고 생각합니다. 기사에 사용 된 코드 :

RelayCommand _saveCommand;
public ICommand SaveCommand
{
    get
    {
        if (_saveCommand == null)
        {
            _saveCommand = new RelayCommand(param => this.Save(),
                param => this.CanSave );
        }
        return _saveCommand;
    }
}

트리거 될 때 Save () 메소드를 호출하는 릴레이 명령을 선언하고 유효성 테스트로 캔 스 세이브 속성을 반환합니다. 이 명령이 WPF의 버튼에 바인딩되면 버튼의 iSenabled 속성은 뷰 모드의 캔 범위 속성과 일치하며 버튼을 클릭하면 (활성화되었다고 가정) Save () 메소드가 뷰 모드에서 호출됩니다.

다른 팁

창조의 대안으로 RelayCommand 모든 방법에 대한 포장지는 제본을 사용할 수있는 무료 라이브러리와 소스를 제안 할 수 있습니다. {BindTo Save()}. 바인딩을 단순화하기 위해 만들었습니다. 또한 상대적인 결합을 훨씬 쉽게 만듭니다. 여기에서 찾을 수 있습니다. http://www.simplygoodcode.com/2012/08/simpler-wpf-binding.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top