2017-10-05 16 views
0

リストビューからバインドするオブジェクトによって保持されているリスト<T>から "名前"という文字列プロパティをバインドしようとしています。私のページでリスト内のネストされたオブジェクトのリストビューのバインディングプロパティ<Object>

public class MyObject 
{ 
    public List<Object> Objects{ get; set; } 
    public string Description {get; set; } 
    public string StartDate {get; set; } 
    public string EndDate {get ;set; } 
    public string Type {get; set; } 

    public MyObject() 
     { 
      Objects = new List<Object>(); 
     } 
} 

public class Object 
    { 
     public string Name { get; set; } 
     public int? Id { get; set; } 
     public int? Order { get; set; } 
    } 

私は、AAリスト< MyObjectにあるコール・非同期からの私のListViewのItemSourceを設定>

var itemSource = listOfMyObject; 

私はすべてが正しくバインドされたDataTemplate

public class Cell : ViewCell 

{ 
    private void SetBindings() 
     { 
      _objectLabel.SetBinding(Label.TextProperty, "Object.Name"); 
      _descriptionLabel.SetBinding(Label.TextProperty, "Description"); 
      _dateStartLabel.SetBinding(Label.TextProperty, "StartDate"); 
      _dateEndLabel.SetBinding(Label.TextProperty, "EndDate"); 
      _typeOfRequest.SetBinding(Label.TextProperty, "Type"); 
     } 
} 

を得ました、私のlistViewに表示されない "Object.Name"を除いて。

私のオブジェクトがリスト< T>であり、Nameプロパティを持たないため、動作しないことが分かります。しかし、どうしたら私が望むものを達成できますか?そして、私は1つのラベルのためにちょうど入れ子にされたlistViewを使用したくありません。
私はのようなもので、データのフラットなリストを得ることができることを見てきました: listOfMyObject.SelectMany(obj => obj.Objects)

が、それをやるかわかりません。 リストのオブジェクトのプロパティをバインドするにはどうすればいいですか?<オブジェクト> MyObject?

おかげ

+0

問題は、オブジェクトがリストであるということです。したがって、Object.nameはあいまいです。なぜなら、オブジェクトのリスト内の任意の名前である可能性があるからです。どのオブジェクトをどのように扱っているのか、どのように決定しますか? – Megadec

+0

私はそれを書いたようにそれを知っています...しかし、私はそれを行う方法を見ません。 さて、Object.Name + "+ Object.Name +" "+ Object.Name +" "のように、ラベルにすべてのNameプロパティを表示したいと思います。だから私はListに1つのオブジェクトのプロパティNameだけを表示するのではなく、すべてを表示したくない。 –

+0

_objectLabel.SetBinding(Label.TextProperty、 "Objects [0] .Name"); それはうまくいきますが、3つのオブジェクトが得られれば、私の前頭葉コメントを表示するときに表示したいと思います。 –

答えて

1
public class ListToStringConverter : IValueConverter 
    { 

     #region IValueConverter implementation 

     public object Convert (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      if (value!= null) { 
       List<Object> temp = (List<Object>)value; 
       if(temp.Count == 0) 
        return ""; 

       string myString = ""; 
       foreach(Object obj in temp){ 
        myString += obj.Name + ","; 
       } 

       return myString; 
      } 
      return ""; 
     } 

     public object ConvertBack (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 

     #endregion 
    } 
+0

働いています。どうもありがとう。誰かがあなたのソリューションを実装する方法を知りたい場合: _objectLabel.SetBinding(Label.TextProperty、 "Objects"、BindingMode.Default、new ListToStringConverter()); –

関連する問題