2017-12-08 31 views
0

C#에서 정의한 사용자 지정 ViewCell을 사용하여 Xamarin.Forms의 ListView를 채 웁니다. ViewCell에는 버튼을 클릭 할 때 ListView의 기본 데이터를 조작 할 수 있어야하는 이미지가 포함되어 있습니다. CommandParameter를 Xamarin.Forms의 ListView 항목 자체로 설정하는 방법

는 기본적으로 I가 해당 뒤에 코드를 찾고 있어요 :

plusButton.GestureRecognizers.Add(new TapGestureRecognizer() { 
Command = bindingContext.AddProgressToChallengeCommand, 
CommandParameter = new Binding(".")} }); 

을하지만 형 도전의 개체에 액세스하려고 할 때 그것은 나에게 NullReference 예외를 제공합니다

<Image.GestureRecognizers> 
    <TapGestureRecognizer           
     Command="{Binding Path=BindingContext.PlusClickedCommand, Source={x:Reference Name=ChallengesLV}}" 
     CommandParameter="{Binding}"/> 
</Image.GestureRecognizers> 

나는 시도 내보기 모드에서 이렇게 :

AddProgressToChallengeCommand = new Command((sender) => doSomething((Challenge)sender)); 

디버그에서 보낸 사람 개체를 검사 할 때 모드에서는 path = "."를 제외한 모든 속성이 null 인 Binding 유형의 객체임을 알립니다.

바인딩을 참조하는 항목을 어떻게 구합니까? 제이슨에

+0

I 퀘스트 을 사용하여 도전 과제 유형을 전달해야한다고 생각합니다. 발신자는 parm이 아닙니다. – Jason

+0

맞습니다. 변경해야했습니다. 또한 추가하려면 myTapGestureRecognizer.SetBinding (TapGestureRecognizer.CommandParameterProperty, ".");을 추가해야했습니다. 팁 주셔서 감사합니다! – Jackilion

답변

0

감사합니다 : 이 명령은 매개 변수에 액세스하는 데, 그런 초기화 할 필요가있다 :

AddProgressToChallengeCommand = new Command<Challenge>((challenge) => 
doSomething(challenge); 

을 그리고 바인딩 인식, 나는 그것을 변경하는 데 필요한 :

var recognizer = new TapGestureRecognizer() {Command = bindingContext.AddProgressToChallengeCommand}; 
recognizer.SetBinding(TapGestureRecognizer.CommandParameterProperty, "."); 
plusButton.GestureRegognizers.Add(recognizer);