您好,我如何通过 xaml 将多个类的数据绑定到单个列表视图。我成功地将数据从单个类绑定到 lisview,但是当我尝试绑定多个类的数据时,它在 xaml 中没有显示任何内容。
问问题
1623 次
1 回答
1
你不能“直接”这样做。由于所有UIElement
控件都只有一个BindingContext
属性,因此您一次只能绑定一个对象。
在 MVVM 模式中,您实现 ViewModel 类来分组所有需要的数据以显示在相关页面上......
因此,对于您的“列表视图”,我建议您在 ViewModel 中创建一个属性,该属性引用一个新对象,该对象只是您想要连接到列表视图的所有类的聚合。
一个简单的例子:
/// Data A needed for your listview
public class DataA { ... }
/// Data B needed for your listview
public class DataB { ... }
///
/// You will make a property of this type into your viewModel
///
public class ListviewAggregatedData : INotifyPropertyChanged
{
private DataA _listviewDataPart1;
private DataB _listviewDataPart2;
public DataA ListViewDataPart1
{
get => _listviewDataPart1;
set { _listviewDataPart1 = value; PropertyChanged?.Invoke(...); }
}
public DataA ListViewDataPart2
{
get => _listviewDataPart2;
set { _listviewDataPart2 = value; PropertyChanged?.Invoke(...); }
}
// ....
}
在你的 xaml中,假设你的 viewModel 实现了一个ListviewAggregatedData
名为“VmAggregatedDataProp”的属性,你可以有这样的东西:
<ListView
BindingContext="{Binding VmAggregatedDataProp}"
Header="{Binding ListViewDataPart1.Title}"
ItemsSource="{Binding ListViewDataPart2.AllMyItems}"
/>
此示例中的绑定名称必须替换为您自己的属性...如果清楚请告诉我...
于 2018-05-31T19:14:43.063 回答