MvvmCross
创建从UIBarButtonItem
到MvxCommand
的绑定的正确方法是什么?
这对我不起作用 - >
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
this.AddBindings (new Dictionary<object, string> (){
{MyButton, "{'Clicked':{'Path':'MyCommand'}}"}
});
}
我在控制台中没有收到任何错误。我可以通过避免绑定来解决问题,但是你知道,如果所有绑定都是最好的。
答案 0 :(得分:11)
假设在调用AddBindings之前初始化了bar按钮 - 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
是否被调用但不知何故失败 - 特别是电子邮件,电话,推文等等在模拟器上无法正常工作的事情。