2016-05-02 3 views
0

ListViewでxにしたい:ListView ItemsSource以外のオブジェクトから値をバインドします。ListView内の別のオブジェクトの値をバインドします。

var objectList1 = new List<Object1>(); 
var object2 = new Object2(); 

<ListView ItemsSource="{x:Bind objectList1}"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding PropertyOfObject1}"/> 
      <TextBlock Text="{x:Bind object2.PropertyOfObject2}"/>    
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

どうすれば達成できますか?

答えて

1

のようにバインドすることができます。

しかし、私はあなたに代替ソリューションを提供することができます。

1)XAMLの隠し要素を使用し、それを目的のビューモデルプロパティにバインドします(これはデータテンプレートの外にあるので簡単に可能です)。

2)次に、その隠し要素を要素バインディングとしてバインドします(データテンプレートの2番目の項目)。

私はすでにこの概念を使用しました。あなたが望むなら、私はそれのための擬似コードを共有することができます。ハッピーコーディング。

+0

x:BindはElementNameを受け取りません – Archana

+0

はい。同じルールが要素名に適用されますが、コンパイル時に型を評価することはできません。 –

+0

はい、キルンポールを作りました。 – TableCreek

0

2つのリストをカプセル化するビューモデルを作成してください。

public class viewmodel{ 
public List<Object1>{get;set;} 
public List<Object1>{get;set;} 

} 、あなたは私が把握することができませんでしたが、これは、結合の相対ソースによって達成することができると信じている。この

<ListView ItemsSource="{x:Bind viewmodel}"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding PropertyOfObject1}"/> 
      <TextBlock Text="{x:Bind object2.PropertyOfObject2}"/>    
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
0

Object1でObject2を参照する必要があります。例:

public class Object1 
{ 
    public Object1(Object2 object2) 
    { 
     this.object2=object2; 
    } 

    public Object2 object2 {get;set;} 

    public string PropertyOfObject1 {get;set;} 
} 


public class Object2 
{ 
    public string PropertyOfObject2 {get;set;} 
} 


List<Object1> objectList1 = new List<Object1>(); 

Object2 o2 = new Object2(); 
Object1 item1 = new Object1(o2); 
objectList1.Add(item1); 
関連する問題