在ListView中我想要x:绑定另一个对象而不是ListView ItemsSource的值。
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>
我怎么能达到这个目的?
答案 0 :(得分:1)
我相信这可以通过相对源绑定来实现,尽管我无法弄清楚。
但我可以给你一个替代解决方案。
1)在XAML中使用隐藏元素并将其绑定到所需的视图模型属性。(这可能很容易实现,因为它在数据模板的外面)。
2)然后将(数据模板中的第二项)绑定到该隐藏元素作为元素绑定。
我已经使用过这个概念。如果你想我可以共享伪代码。快乐的编码。
答案 1 :(得分:0)
请创建一个viewmodel来封装两个列表。
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>
答案 2 :(得分: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);