2016-05-02 1 views
0

In einer ListView möchte ich x: Bindet einen Wert von einem anderen Objekt als die ListView ItemsSource von.Wert von einem anderen Objekt in ListView binden

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> 

Wie kann ich das erreichen?

Antwort

1

Ich glaube binden, dass diese durch eine relative Quelle Bindung erreicht werden kann, auch wenn ich nicht herausfinden kann.

Aber ich kann Ihnen eine alternative Lösung geben.

1) Verwenden Sie ein verstecktes Element im XAML und binden Sie es an die gewünschte Ansichtsmodelleigenschaft (dies könnte leicht möglich sein, da es sich außerhalb der Datenvorlage befindet).

2) Dann binden (zweites Element in der Datenvorlage) an dieses ausgeblendete Element als Elementbindung.

Ich habe dieses Konzept bereits verwendet. Wenn Sie wollen, kann ich Pseudo-Code dafür teilen. Glückliche Kodierung.

+0

Ich denke, x: Bindung Elementname nicht – Archana

+0

ja richtig. Die selbe Regel gilt für den Elementnamen und kann den Typ in der Kompilierzeit nicht auswerten. –

+0

Ja bitte etwas von dem, was Sie gemacht @Kiran Paul – TableCreek

0

erstellen Sie bitte ein Viewmodel, um die zwei Listen zu kapseln.

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

} dann können Sie diese

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

Sie müssen auf das Objekt2 in Ihrem Objekt1 verweisen. Beispiel:

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