2017-05-19 8 views
0

これはWPFアプリケーションで、TextBlock内の個々のコレクションアイテムプロパティをバインドしようとしています。私はStackOverflowを検索し、他の多くの人が同様の質問をしており、解決策が働いています。同じ方法で値にアクセスしようとしましたが、どういうわけか、私の場合はインデックス値が表示されないので、同様の質問を投稿します。私がここで間違っていることを特定するのを手伝ってください。WPFアプリケーション内のコレクションの個々の要素をバインドします。

ビューモデル

public class SequeanceViewModel 
{ 
    public ObservableCollection<Sequence> SequenceList = new ObservableCollection<ViewModel.Sequence>(); 
    public SequeanceViewModel() 
    { 
     for (int i = 1; i <= 6; i++) 
     { 
      SequenceList.Add(new ViewModel.Sequence() { Index = i, Name = "Name goes here" }); 
     } 
    } 
} 

public class Sequence : INotifyPropertyChanged 
{ 
    private int index { get; set; } 
    private bool current { get; set; } 
    private string name; 
    public int Index 
    { 
     get 
     { 
      return index; 
     } 
     set 
     { 
      index = value; 
      OnPropertyChanged(new PropertyChangedEventArgs("Index")); 
     } 
    } 
    public bool Current 
    { 
     get 
     { 
      return current; 
     } 
     set 
     { 
      current = value; 
      OnPropertyChanged(new PropertyChangedEventArgs("Current")); 
     } 
    } 
    public string Name 
    { 
     get 
     { 
      return name; 
     } 
     set 
     { 
      name = value; 
      OnPropertyChanged(new PropertyChangedEventArgs("Name")); 
     } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
    public void OnPropertyChanged(PropertyChangedEventArgs e) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, e); 
     } 
    } 
} 

ウィンドウコード

SequeanceViewModel sequeanceViewModel; 
public Validation() 
{ 
    InitializeComponent(); 

    sequeanceViewModel = new SequeanceViewModel(); 
    this.DataContext = sequeanceViewModel; 

} 

XAMLでバインディング

<TextBlock Text="{Binding SequenceList[0].Index, Mode=OneWay}"></TextBlock> 
あなたはSequenceLiを公開する必要があります
+0

あなたのパブリックプロパティは、結合作業をするためにゲッターを持っている必要があります:公共のObservableCollection SequenceListを{get;} –

答えて

2

あなただけのパブリックプロパティにバインドすることができますので、あなたがプロパティとしてではなく公共の場としてSequenceListを定義する必要があります。

public ObservableCollection<Sequence> SequenceList { get; } = new ObservableCollection<ViewModel.Sequence>(); 
+0

ありがとうございました。 –

0

stをパブリック変数の代わりにプロパティとして返します。それ以外の場合は、バインドできません。

関連する問題