3

からへMvvmCrossのバインディングを作成する適切な方法は何ですか?UIBarButtonItemMvxCommand

これは私にはうまくいきません - >

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

コンソールにエラーは表示されません。バインドを回避することで回避できますが、すべてをバインドした方が見栄えがよくなります。

4

1 に答える 1

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、何らかの理由で失敗します。これは、シミュレータで常に機能するとは限らない電子メール、電話、ツイートなどで特に発生する可能性があります。

于 2013-03-04T13:23:47.293 に答える