Xamarin.Forms将ViewModel作为ListView的ViewCell中的BindingContext

时间:2017-03-06 05:44:31

标签: listview xamarin.forms binding-context

我在FlowListView中添加DataTemplateSelector(基本上与ListView相同)。

<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, ".");

但我想在ViewModel中使用与ContentView绑定的DataTemplateSelector中的一些变量。我尝试了这段代码但没有工作。

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

如何在ViewModel {/ 1}} DataTemplateSellector中获取费用?

1 个答案:

答案 0 :(得分:0)

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

这应该有效。你应该通过&#34; Page&#34;你和#34;这个&#34;的绑定。因此,您应该在创建ItemTemplate时设置绑定

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