2017-03-06 4 views
0

DataTemplateSelectorをFlowListView(基本的にはListViewと同じ)に追加します。Xamarin.Forms ListViewのViewCellでViewModelをBindingContextとして取得

<ContentView 
    ... 
    BindingContext="{Binding PatientImageListVM, Source={StaticResource VMLocator}}"> 
    ... 
    <flv:FlowListView 
     ... 
     HasUnevenRows="true"> 
     <flv:FlowListView.FlowColumnTemplate> 
      <local:PatientImageListDataTemplateSelector/> 
     </flv:FlowListView.FlowColumnTemplate> 
    </flv:FlowListView> 
</ContentView> 

そして、このコードを使用してバインディングでセルを取得します。

button.SetBinding(Button.CommandParameterProperty, "."); 

しかし、私はDataTemplateSelectorContentViewにバインドさViewModelでいくつかの変数を使用したいです。私はこのコードを試しましたが、動作しません。

label.SetBinding(Label.IsVisibleProperty, 
    "{Binding BindingContext.LabelVisibility, Source={x:Reference Page}}"); 

どのように私はDataTemplateSellectorViewModelでvatiableを得ることができますか?

答えて

0
label.SetBinding(Label.IsVisibleProperty, new Binding("BindingContext.LabelVisibility", source: this)); 

これは動作するはずです。あなたは "this"であなたのバインディングに "Page"を渡すべきです。したがって、ItemTemplateを作成するときにバインドを設定する必要があります

lv.ItemTemplate = new DataTemplate(() => 
{ 
    //.... 
    label.SetBinding(Label.IsVisibleProperty, new Binding("BindingContext.LabelVisibility", source: this)); 
} 
+0

アンサーに感謝します。 ソリューション{"ImageListVM.LabelVisibility、Source = {StaticResource VMLocator}}"が見つかりました。 私はあなたのコードに置き換えると、それも動作します。 – bismute

関連する問題