绑定到MvvmCross中的UIBarButtonItem事件

Ste*_*oix 3 xamarin.ios ios mvvmcross

MvvmCross从a UIBarButtonItem到a 创建绑定的正确方法是MvxCommand什么?

这对我不起作用 - >

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

我在控制台中没有出现任何错误.我可以通过避免绑定来解决问题,但是你知道,如果所有绑定都是最好的.

Stu*_*art 11

假设在调用AddBindings之前初始化了bar按钮 - MyButton,那么我认为你的代码应该可行.

我将Conference示例中的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);
Run Code Online (Sandbox Code Playgroud)

对不起,如果这"对我有用",答案对您的机器没有帮助:/

要确保在Release模式下工作,您可能需要在UIBarButtonItem.Clicked某处添加一些代码.

如果你想从绑定中获得更多的跟踪,那么你可以设置一个诊断跟踪级别(但这可能会非常冗长).

可能值得检查一下你MyCommand是否被调用但不知何故失败 - 这可能尤其发生在诸如电子邮件,电话,推文等等并不总是在模拟器上工作的事情上.