2017-12-06 19 views
0

異なるビューモデルでタブ付きページをバインドする方法はありますか?それをより明確にするために 私は、このタブ付きページがあります。Xamarin TabbedPages MVVMバインド

<TabbedPage.Children>  
    <tabPages:Page1/> 
    <tabPages:Page2/> 
    <tabPages:Page3/> 
</TabbedPage.Children> 

これらの3ページが別のビューモデルを持っています。しかし、問題は各ページのビューモデルがバインドされないことです。これを行うための具体的な方法はありますか?

各ページのビューモデルが機能するかどうかをテストするには、タブ付きページのコードをインライン化します。

<TabbedPage.Children> 
    <ContentPage Title="Test"> 
    <Label Text="{Binding TestBind}"/> 
    </ContentPage> 
</TabbedPage.Children> 

タブページ(親)のビューモデルにバインドするには、この方法が有効です。しかし、個別に行うと、ビューモデルはバインドされません。 など。このようにそれを使用して

public class Page1ViewModel : BaseViewModel 
{ 
     public Page1ViewModel() 
     { 
      TestBind = "Test"; 
     } 
     private string _TestBind; 
     public string TestBind 
     { 
      get { return _TestBind; } 
      set { SetProperty(ref _TestBind, value); } 
     } 
} 

ただ、各ビューモデルにそれぞれのTabPageのBindingContextをを設定しないで、なぜ、それが

答えて

0

をバインドしません:

<TabbedPage.Children>  
    <tabPages:Page1 BindingContext="{Binding viewModel1}" /> 
    <tabPages:Page2 BindingContext="{Binding viewModel2}" /> 
    <tabPages:Page3 BindingContext="{Binding viewModel3}"/> 
</TabbedPage.Children> 

これらのviewmodelsがでプロパティとして存在しなければなりません親VM

+0

それでは、それぞれのビューモデル内のプロパティを親ビューモデルに初期化する必要があるでしょうか?申し訳ありませんが、私が間違っている場合は私を修正します。おかげで –

1

私はそれが働いて作ったので、これは私がやったことです:

<TabbedPage.Children> 
     <views:ChildPage1> 
      <views:ChildPage1.BindingContext> 
       <viewModels:ChildPage1ViewModel/> 
      </views:ChildPage1.BindingContext> 
     </views:ChildPage1> 
     <views:ChildPage2> 
      <views:ChildPage2.BindingContext> 
       <viewModels:ChildPage2ViewModel/> 
      </views:ChildPage2.BindingContext> 
     </views:ChildPage2> 
    </TabbedPage.Children> 

私はそれを設定する要素のバインディングコンテキストプロパティを使用していました。

+0

うれしかった!! – Maximus

関連する問題