Xamarin.Forms 在 ListView 的 ViewCell 中获取 ViewModel 作为 BindingContext

Xamarin.Forms get ViewModel as BindingContext in ViewCell of ListView

我在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 中的一些变量与 DataTemplateSelector 中的 ContentView 绑定。我试过这段代码但没有用。

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

如何在 DataTemplateSellector 中获取 ViewModel 中的变量?

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

这应该有效。您应该将 "Page" 传递给您与 "this" 的绑定。因此,您应该在创建 ItemTemplate

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