2017-08-30 3 views
0

J'ai ce code que j'essaye de lier à une classe nommée BandInfoRepository.cs qui se trouve dans le même dossier que ce XAML nommé PaginaB.Je ne vois pas d'erreur de syntaxe affichée sur VisualStudio, toujours le texte est ne s'affiche pas (j'ai ajouté backgroundColor juste pour voir si l'étiquette était affichée et ils le sont, mais le texte ne l'est pas).Comment puis-je configurer le contexte de liaison dans XAML à une classe différente?

Peut-être est-il important de souligner que j'utilise le listview de syncfusion.

PaginaB.xaml:

  <syncfusion:SfListView x:Name="listView" 
       ItemsSource="{Binding Source={local2:BandInfoRepository}, Path=BandInfo}" 
       ItemSize="100" 
       AbsoluteLayout.LayoutBounds="1,1,1,1" 
       AbsoluteLayout.LayoutFlags="All" > 
       <syncfusion:SfListView.ItemTemplate> 
        <DataTemplate> 
         <Grid Padding="10"> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="0.4*" /> 
           <RowDefinition Height="0.6*" /> 
          </Grid.RowDefinitions> 
          <Label Text="{Binding Source={local2:BandInfoRepository}, Path=BandName}" 
           BackgroundColor="Olive" 
           FontAttributes="Bold" 
           TextColor="Black" 
           FontSize="20" /> 
          <Label Grid.Row="1" 
           BackgroundColor="Navy" 
           Text="{Binding Source={local2:BandInfoRepository}, Path= BandDescription}" 
           TextColor="Black" 
           FontSize="14"/> 
         </Grid> 
        </DataTemplate> 
       </syncfusion:SfListView.ItemTemplate> 
      </syncfusion:SfListView> 

Et voici le fichier BandInfoRepository.cs:

public class BandInfoRepository 
{ 
    private ObservableCollection<BandInfo> bandInfo; 

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

    public BandInfoRepository() 
    { 
     GenerateBookInfo(); 
    } 

    internal void GenerateBookInfo() 
    { 
     bandInfo = new ObservableCollection<BandInfo>(); 
     bandInfo.Add(new BandInfo() { BandName = "Nirvana", BandDescription = "description" }); 
     bandInfo.Add(new BandInfo() { BandName = "Metallica", BandDescription = "description" }); 
     bandInfo.Add(new BandInfo() { BandName = "Frank Sinatra", BandDescription = "description" }); 
     bandInfo.Add(new BandInfo() { BandName = "B.B. King", BandDescription = "description" }); 
     bandInfo.Add(new BandInfo() { BandName = "Iron Maiden", BandDescription = "description" }); 
     bandInfo.Add(new BandInfo() { BandName = "Megadeth", BandDescription = "description" }); 
     bandInfo.Add(new BandInfo() { BandName = "Darude", BandDescription = "description" }); 
     bandInfo.Add(new BandInfo() { BandName = "Coldplay", BandDescription = "description" }); 
     bandInfo.Add(new BandInfo() { BandName = "Dream Evil", BandDescription = "description" }); 
     bandInfo.Add(new BandInfo() { BandName = "Pentakill", BandDescription = "description" }); 
    } 
} 

Répondre

1

Dans votre DataTemplate vous ne définissez pas la source dans la liaison normalement, sauf si vous voulez faire un peu la magie. XAML définit DataContext à chaque élément de ItemsSource.

Essayez:

<Label Text="{Binding BandName}" BackgroundColor="Olive" FontAttributes="Bold" /> 

et souvenez-vous de mettre en œuvre INotifyPropertyChanged pour BANDINFO si vous voulez XAML de suivre les changements dans ses propriétés

0

Merci d'utiliser Syncfusion produits.

Nous avons examiné votre code et constaté que vous avez mal défini le ItemTemplate. Vous pouvez lier directement les objets de données de la collection sous-jacente dans la vue définie dans la propriété ItemTemplate. SfListView crée lui-même une vue pour chaque élément de la propriété ItemsSource et définit le contexte de liaison.

Pour votre référence, nous avons joint l'échantillon et vous pouvez le télécharger à partir du lien ci-dessous.

Exemple: http://www.syncfusion.com/downloads/support/directtrac/general/ze/ListViewSample607957192

Pour plus d'informations sur l'utilisation SfListView, s'il vous plaît consulter le lien de documentation UG suivante. https://help.syncfusion.com/xamarin/sflistview/getting-started

Veuillez nous faire savoir si vous avez besoin d'aide supplémentaire.

Cordialement, Dinesh Babu Yadav

+0

user3512524 m'a déjà aidé avec la solution et a travaillé, je suis nouveau à la liaison de données. Encore, merci pour votre réponse, je téléchargerai l'échantillon que vous avez lié et verrai si je peux améliorer mon code à partir de là. –