1

내비게이션 항목의 뒤로 버튼을 바인딩하고 사용자가 뒤로 버튼을 클릭 할 때마다 뷰 모델에서 바인딩 된 코드를 실행하려고합니다.Xamarin iOS : MvvMCross navigationItem의 뒤로 버튼

내 현재 코드 :

보기 :

var bSet = this.CreateBindingSet<xView, xViewModel>(); 
      bSet.Bind(NavigationItem.LeftBarButtonItem).To(vm => vm.CheckIfLoading); 
      //bSet.Bind(NavigationItem.BackBarButtonItem).To(vm => vm.CheckIfLoading); 

뷰 모델 :

private ICommand checkIfLoading; 
public xViewModel() 
      : base() 
     { 
      this.messenger = mvxMessenger; 
      checkIfLoading = new MvxCommand(DoRefresh); 
     } 
public ICommand CheckIfLoading { get { return checkIfLoading; } } 
private async void DoRefresh() 
{ 
    await Task.Delay(5000); 
} 
나는 다시 버튼을 누르면 지금까지, 나는 그것이 DoRefresh()을 공격 할

,하지만하지 . 누구든지 오류를 지적하거나 해결할 수 있습니까?

답변

3

당신은 당신의 ICommandClicked을 결합하려면 다음 코드를 사용할 수 있습니다

this.AddBindings(new Dictionary<object, string>() 
{ 
    { NavigationItem.LeftBarButtonItem, "Clicked CheckIfLoading" } 
}); 

사이드 노트 Clicked 바인딩 기본이 아닌 경우

은 다음 줄이 작동하지 않을 수 있습니다 : bSet.Bind(NavigationItem.LeftBarButtonItem).To(vm => vm.CheckIfLoading);

기타

bSet.Bind(NavigationItem.LeftBarButtonItem).For(lb => lb.Clicked).To(vm => vm.CheckIfLoading);

을하지만 lb.Clicked는 왼쪽면 동작 (+= 또는 -=)를 기대 때문에,이 경우에는 그 작동하지 않을 것이다 : 특정 속성에 결합하는 R의 방법은 다음과 같이 .For(labda) 방법을 사용하여 달성 될 수있다

바인딩에 대한 자세한 내용은 https://github.com/MvvmCross/MvvmCross/wiki/databinding

관련 문제