2013-03-04 6 views
3

MvvmCross을 사용하여 UIBarButtonItem에서 MvxCommand으로 바인딩을 만드는 적절한 방법은 무엇입니까?MvvmCross의 UIBarButtonItem 이벤트에 바인딩

이 나를 위해 작동하지 않습니다 ->

public override void ViewDidLoad() 
{ 
    base.ViewDidLoad(); 
    this.AddBindings (new Dictionary<object, string>(){ 
     {MyButton, "{'Clicked':{'Path':'MyCommand'}}"} 
    }); 
} 

내가 콘솔에 어떤 오류가 발생하지 않습니다. 바인딩을 피함으로써 해결할 수 있지만 모든 것이 묶여 있다면 최선의 결과를 얻을 수 있습니다.

답변

11

AddBindings를 호출하기 전에 MyButton 바 버튼이 초기화되었다고 가정하면 코드가 작동해야한다고 생각합니다.

나는 아래이에 회의 샘플에서 WelcomeView의 코드를 수정하고 작동하는 것 같다 ...

 var s = new UIBarButtonItem() 
     { 
      Title = "Click me" 
     }; 

     NavigationItem.SetRightBarButtonItem(s, false); 

     this.AddBindings(new Dictionary<object, string>() 
      { 
       { Button1, "TouchUpInside ShowSponsorsCommand" },    
       { Button2, "TouchUpInside ShowExhibitorsCommand" },    
       { Button3, "TouchUpInside ShowMapCommand" },     
       { Button4, "TouchUpInside ShowAboutCommand" }, 
      { s, "Clicked ShowMapCommand" }, 
      }); 

     //NavigationItem.SetRightBarButtonItem(new UIBarButtonItem("Tweet", UIBarButtonItemStyle.Bordered, (sender, e) => ViewModel.DoShareGeneral()), false); 

대답은 컴퓨터에 도움이되지 않는이 '나를 위해 작동'경우 죄송합니다 :/

릴리스 모드에서이 기능을 사용하려면 어딘가에서 UIBarButtonItem.Clicked 코드를 추가해야 할 수도 있습니다.

바인딩에서 더 많은 추적을 원할 경우 설정할 수있는 진단 추적 수준이 있습니다 (그러나 이것은 매우 자세하게 나타날 수 있습니다).

MyCommand이 호출되었지만 어떻게 든 실패하는지 확인하는 것이 좋습니다. 이것은 특히 시뮬레이터에서 항상 작동하지 않는 전자 메일, PhoneCalls, 짹짹 등의 경우에 발생할 수 있습니다.

+0

감사합니다. @ 스튜어트. 그것은 나를 위해 일합니다. 내'MvxCommand'의'canExecute' 부분이 false를 반환했습니다 :/ –

+0

Mvx가 현재 수행하지 않는 한 가지는 canExecute를 모든 컨트롤에서 바인딩을 사용하도록 처리하는 것입니다.이 기능은 별도의 활성화/비활성화 된 속성을 사용하여 작동 할 수 있지만 ' 완벽 해. – Stuart

관련 문제