2017-07-10 19 views
1

私はプロジェクトにBottomNavigationBarを追加するためにthisライブラリを使用しています。私はこのプロジェクトのフレームワークにもMvvmCrossを使用しています。私はどのようにMvxCommandを私のBottomBarにバインドするのか分かりません。誰でもこれがどうやってできるのか知っていますか?ここでMvxCommandをBottomBarに接続するにはどうすればよいですか?

は大体私のViewModelMvxCommandが見えるものであるように:

public ICommand OnTabSelectedCommand 
{ 
    get { return New MvxCommand(() => OnTabSelected()); } 
} 

BottomBar作成は、次のようになります。

protected override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 

     var recycler = FindViewById<MvxRecyclerView>(Resource.Id.menuList); 
     var layoutManager = new LinearLayoutManager(this); 
     recycler.SetLayoutManager(layoutManager); 
     recycler.NestedScrollingEnabled = false; 


     var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbarFinder); 
     SetSupportActionBar(toolbar); 

     _bottomBar = BottomBar.AttachShy((CoordinatorLayout)FindViewById(Resource.Id.ListCoordinator), 
         FindViewById(Resource.Id.menuList), savedInstanceState); 

     _bottomBar.SetItems(new[] 
       { new BottomBarTab(Resource.Drawable.ic_recents, "Recents"), 
       new BottomBarTab(Resource.Drawable.ic_favorites, "Favorites"), 
       new BottomBarTab(Resource.Drawable.ic_nearby, "Nearby") } 
      ); 

     _bottomBar.SetOnMenuTabClickListener(this); 

     _bottomBar.SetActiveTabColor(Color.Red); 

     _bottomBar.MapColorForTab(0, "#7B1FA2"); 
     _bottomBar.MapColorForTab(1, "#FF5252"); 
     _bottomBar.MapColorForTab(2, "#FF9800"); 
    } 

    public void OnMenuTabSelected(int menuItemId) 
    { 
     // Do something 
    } 

    public void OnMenuTabReSelected(int menuItemId) 
    { 
     // Do Something 
    } 
+0

は、追加の「if(menuItemId == XXX)myViewModel

は、次に、あなただけで、あなたのコマンドを呼び出す必要があります.OnTabSelectedCommand.Execute() "ビューの" OnMenuTabSelected "メソッドで。 – hugoterelle

+0

@hugo働きたくありません。私は 'ListHomeViewModel.OnTabSelectedCommand.Execute();'を呼び出していますが、エラーが発生します。私は '静的'コマンドを作る必要がありますか? – user5661402

+0

いいえ、 "public class myview:MvxActivity "のような宣言を使用すると、 "MyViewModel"タイプの "ViewModel"という名前のプロパティがあります。そして、 "ViewModel.OnTabSelectedCommand.Execute()"を呼び出す必要があります。間違ったviewmodelの使用法を申し訳ありません... – hugoterelle

答えて

2

あなたはこのようなあなたの活動を宣言した場合:

public class MyView : MvxActivity<MyViewModel> 

あなたはその物件にアクセスすることができます「MyViewModel」タイプの「ViewModel」。

ViewModel.OnTabSelectedCommand.Execute(); 

この呼び出しは、あなたのスイッチコマンドを含めるべきである:

public void OnMenuTabSelected(int menuItemId) 
{ 
    // Do something 
} 
関連する問題