Xaml Syncfusion Xamarin列表视图不显示任何项目

Xaml Syncfusion Xamarin列表视图不显示任何项目,xaml,listview,xamarin,data-binding,syncfusion,Xaml,Listview,Xamarin,Data Binding,Syncfusion,我想插入一个syncfusion linearlayout listview,但由于某些原因,它没有显示任何项目/数据,而且我没有收到任何错误。同时,我尝试更改绑定语法和一些事情,但似乎无法正确执行 这是我的xaml: <syncfusion:SfListView x:Name="listView" ItemTemplate="{Binding Source={local2:BandInfoRepository}, Path=Band

我想插入一个syncfusion linearlayout listview,但由于某些原因,它没有显示任何项目/数据,而且我没有收到任何错误。同时,我尝试更改绑定语法和一些事情,但似乎无法正确执行

这是我的xaml:

            <syncfusion:SfListView x:Name="listView"
                ItemTemplate="{Binding Source={local2:BandInfoRepository}, Path=BandInfo, Mode=TwoWay}"
                ItemSize="100"
                AbsoluteLayout.LayoutBounds="1,1,1,1" 
                AbsoluteLayout.LayoutFlags="All" >
                <syncfusion:SfListView.ItemTemplate>
                    <DataTemplate>
                        <Grid RowSpacing="0" Padding="0,12,8,0" ColumnSpacing="0" Margin="0">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto" />
                                <RowDefinition Height="1" />
                            </Grid.RowDefinitions>
                            <Grid RowSpacing="0" Padding="8,0,8,10">
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="auto" />
                                </Grid.RowDefinitions>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto" />
                                    <ColumnDefinition Width="Auto" />
                                </Grid.ColumnDefinitions>
                                <Image Source="{Binding Path=BandImage}"
                                    Grid.Column="0"
                                    Grid.Row="0"
                                    HeightRequest="80"
                                    WidthRequest="70"
                                    HorizontalOptions="Start"
                                    VerticalOptions="Start"
                                />
                                <StackLayout Orientation="Vertical" 
                                    Padding="5,-5,0,0"
                                    VerticalOptions="Start"
                                    Grid.Row="0"
                                    Grid.Column="1">
                                    <Label Text="{Binding Path=BandName}" 
                                        FontAttributes="Bold"
                                        FontSize="16"
                                        BackgroundColor="Green"
                                        TextColor="#000000" />
                                    <Label Text="{Binding Path=BandDescription}"
                                        Opacity="0.54"
                                        BackgroundColor="Olive"
                                        TextColor="#000000"
                                        FontSize="13" />
                                </StackLayout>
                            </Grid>
                            <BoxView Grid.Row="1" 
                                HeightRequest="1"
                                Opacity="0.75"
                                BackgroundColor="#CECECE" />
                        </Grid>
                    </DataTemplate>
                </syncfusion:SfListView.ItemTemplate>
            </syncfusion:SfListView>
以防万一,我就是这样填写这个集合的(bandinformepository.cs):

公共类BandInformationLocatory
{
私有可观察收集bandInfo;
公共可观测收集波段信息
{
获取{return bandInfo;}
设置{this.bandInfo=value;}
}
公共信息库()
{
GenerateBookInfo();
}
内部void GenerateBookInfo()
{
字符串[]BandNames=新字符串[]{
“涅盘”,
“Metallica”,
“弗兰克·西纳特拉”
};
字符串[]BandDescriptions=新字符串[]{
“说明”,
“说明”,
“说明”
};
bandInfo=新的ObservableCollection();
对于(int i=0;i

我希望你们能帮我解决这个问题,因为我已经被困了一段时间了。提前感谢。

看起来您无意中绑定了两次
ItemTemplate
,而没有绑定任何内容
ItemsSource
甚至有一次。

我们查看了您的代码片段,发现您已将基础集合绑定到itemsTemplate属性,而不是ItemsSource属性。要进一步绑定基础集合,必须将ViewModel(即BandInformationPository)设置为ContentPage的BindingContext。请参考以下代码片段,了解如何为页面设置BindingContext,以及如何将基础集合绑定到ItemsSource属性中

代码示例:[XAML]

<ContentPage>
  <ContentPage.BindingContext>
    <local:BandInfoRepository/>
  </ContentPage.BindingContext>

  <ContentPage.Content>
    <listView:SfListView x:Name="listView" ItemSize="70" ItemsSource="{Binding BandInfo}" >

      <listView:SfListView.ItemTemplate>
        <DataTemplate>
          <ViewCell>
            <ViewCell.View>
              <Grid x:Name="grid" RowSpacing="1">
                <Grid.RowDefinitions>
                  <RowDefinition Height="*" />
                  <RowDefinition Height="1" />
                </Grid.RowDefinitions>
                <Grid RowSpacing="1">
                  <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="50" />
                    <ColumnDefinition Width="*" />
                  </Grid.ColumnDefinitions>
                  <Image Source="{Binding BandImage}"
     VerticalOptions="Center"
     HorizontalOptions="Center"
     HeightRequest="50" Aspect="AspectFit"/>
                  <Grid Grid.Column="1"
    RowSpacing="1"
    Padding="10,0,0,0"
    VerticalOptions="Center">
                    <Label Text="{Binding ContactName}"/>
                  </Grid>
                </Grid>
                <StackLayout Grid.Row="1" BackgroundColor="Gray" HeightRequest="1"/>
              </Grid>
            </ViewCell.View>
          </ViewCell>
        </DataTemplate>
      </listView:SfListView.ItemTemplate>
    </listView:SfListView>
  </ContentPage.Content>
</ContentPage>

为了您的帮助,我们附上了下面的工作示例链接


示例链接:

为什么ItemTemplate绑定到回购协议?@Jason这是一个类,我只是举了个例子并重命名了类,以便为我的项目提供更多“合适”的名称。我将添加整个.cs以便您可以看到它。看看下面Ivan的回答,他指出了我已经尝试过的同一个问题,我将“ItemTemplate”更改为“ItemSource”现在显示了部分数据,但我仍然无法将BandImage用于workLet me检查,我也是OOP新手,Xamarin也会尝试修复它的外观,就像它现在部分工作一样,但是BandImage绑定仍然不工作,还有一些其他属性,知道吗?
public class BandInfoRepository
{
    private ObservableCollection<BandInfo> bandInfo;

    public ObservableCollection<BandInfo> BandInfo
    {
        get { return bandInfo; }
        set { this.bandInfo = value; }
    }

    public BandInfoRepository()
    {
        GenerateBookInfo();
    }

    internal void GenerateBookInfo()
    {
        string[] BandNames = new string[] {
            "Nirvana",
            "Metallica",
            "Frank Sinatra"
        };

        string[] BandDescriptions = new string[] {
            "Description",
            "Description",
            "Description"
        };

        bandInfo = new ObservableCollection<BandInfo>();

        for (int i = 0; i < BandNames.Count(); i++)
        {
            var band = new BandInfo()
            {
                BandName = BandNames[i],
                BandDescription = BandDescriptions[i],
                BandImage = ImageSource.FromResource("Lim.Images.Image" + i + ".png")
            };
            bandInfo.Add(band);
        }
    }
}
<ContentPage>
  <ContentPage.BindingContext>
    <local:BandInfoRepository/>
  </ContentPage.BindingContext>

  <ContentPage.Content>
    <listView:SfListView x:Name="listView" ItemSize="70" ItemsSource="{Binding BandInfo}" >

      <listView:SfListView.ItemTemplate>
        <DataTemplate>
          <ViewCell>
            <ViewCell.View>
              <Grid x:Name="grid" RowSpacing="1">
                <Grid.RowDefinitions>
                  <RowDefinition Height="*" />
                  <RowDefinition Height="1" />
                </Grid.RowDefinitions>
                <Grid RowSpacing="1">
                  <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="50" />
                    <ColumnDefinition Width="*" />
                  </Grid.ColumnDefinitions>
                  <Image Source="{Binding BandImage}"
     VerticalOptions="Center"
     HorizontalOptions="Center"
     HeightRequest="50" Aspect="AspectFit"/>
                  <Grid Grid.Column="1"
    RowSpacing="1"
    Padding="10,0,0,0"
    VerticalOptions="Center">
                    <Label Text="{Binding ContactName}"/>
                  </Grid>
                </Grid>
                <StackLayout Grid.Row="1" BackgroundColor="Gray" HeightRequest="1"/>
              </Grid>
            </ViewCell.View>
          </ViewCell>
        </DataTemplate>
      </listView:SfListView.ItemTemplate>
    </listView:SfListView>
  </ContentPage.Content>
</ContentPage>