首页 > 解决方案 > BindingContext 不访问 ViewModel 中的 getter

问题描述

我有一个 viewModel,它链接到一个带有 BindingContext 的视图。

BindingContext = viewModelTest;

在我的 ViewModel 中,我制作了一个自定义 getter,目的是获取测试项目列表。

public class viewModelTest: INotifyPropertyChanged
{
    public List<string> partners
    {
        get
        {
            List<string> _partners = new List<string>() { "test1", "test2", "test3", "test3" };
            return _partners;
        }
    }
    public List<string> partnersTwo
    {
        get
        {
            List<string> _partners2 = new List<string>() { "test4", "test5", "test6", "test7" };
            return _partners;
        }
    }
}

这是以下xaml:

<CarouselView>
    <CarouselView.ItemsLayout>
        <GridItemsLayout/>
            </CarouselView.ItemsLayout>
                <CarouselView.ItemTemplate>
                    <DataTemplate>
                        <Frame>
                            <Label Text="{Binding partners}"/>
                            <Label Text="{Binding partnersTwo}"/>
                        </Frame>
                    </DataTemplate>
    </CarouselView.ItemTemplate>
</CarouselView>

从上面的代码中,我无法访问我的 getter{Binding partners}

仅当我将 BindingContext 更改为以下内容时才有可能:

BindingContext = viewModelTest.partners; 

这自然是不受欢迎的,因为我希望能够将多个参数传递给我的视图,即 partnersTwo。

因此,如何从我的 ViewModelTest 在我的 xaml 文件中进行单独的绑定?

标签: c#xamarinxamarin.forms

解决方案


试试这个 :

<CarouselView ItemSource="{Binding partners}">
    <CarouselView.ItemsLayout>
        <GridItemsLayout/>
            </CarouselView.ItemsLayout>
                <CarouselView.ItemTemplate>
                    <DataTemplate>
                        <Frame>
                            <Label Text="{Binding}"/>
                        </Frame>
                    </DataTemplate>
    </CarouselView.ItemTemplate>
</CarouselView>

推荐阅读