2017-08-30 9 views
0

私はこのコードを持っています。このXAMLと同じフォルダにあるBandInfoRepository.csというクラスにバインドしようとしています.PaginaBという名前のXAMLと同じフォルダにあります.VisualStudioに構文エラーは表示されません。表示されません(ラベルが表示されているかどうかを確認するためにbackgroundColorを追加しましたが、テキストは表示されません)。XAMLのバインディングコンテキストを別のクラスに設定するにはどうすればよいですか?

私がsyncfusionのリストビューを使用していることを指摘することは重要なことかもしれません。

  <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> 

そして、これはBandInfoRepository.csファイルです:

PaginaB.xaml

あなたのDataTemplateで

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" }); 
    } 
} 

答えて

1

あなたには、いくつかをしたい場合を除き、あなたは、通常の結合にソースを設定していませんマジック。 XAMLはDataSourceをItemsSourceの各アイテムに設定します。

試してみてください。

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

、あなたが

0

がSyncfusion製品をご利用いただきありがとうございます、そのプロパティの変更を追跡するためにXAMLをしたい場合はBANDINFOのためのINotifyPropertyChangedの実装をすることを忘れないでください。

コードを見て、ItemTemplateを間違って定義したことがわかりました。基になるコレクション内のデータオブジェクトは、ItemTemplateプロパティで定義されたビューに直接バインドできます。 SfListView自体は、ItemsSourceプロパティの各アイテムのビューを作成し、それに対するバインディングコンテキストを定義します。

参考のため、サンプルを添付しており、下のリンクからダウンロードできます。

サンプル:SfListViewでの作業の詳細についてはhttp://www.syncfusion.com/downloads/support/directtrac/general/ze/ListViewSample607957192

、以下のUGのドキュメントのリンクを参照してください。 https://help.syncfusion.com/xamarin/sflistview/getting-started

さらに詳しい情報が必要な場合は、お知らせください。

よろしく、 ディネッシュバブーヤダヴ

+0

user3512524はすでに、私はデータバインディングに新たなんだ、溶液で私を助けたと働きました。それでも、あなたの答えをありがとう、あなたがリンクしたサンプルをダウンロードし、そこから自分のコードを改善できるかどうかを確認します。 –

関連する問題