Xaml 将多个类的数据绑定到单个列表视图/xamarin表单
您好,我如何通过xaml将多个类的数据绑定到单个列表视图。我成功地将数据从单个类绑定到lisview,但当我尝试绑定多个类的数据时,它在xaml中没有显示任何内容。您不能“直接”这样做。 由于所有Xaml 将多个类的数据绑定到单个列表视图/xamarin表单,xaml,xamarin,data-binding,portable-class-library,shared-project,Xaml,Xamarin,Data Binding,Portable Class Library,Shared Project,您好,我如何通过xaml将多个类的数据绑定到单个列表视图。我成功地将数据从单个类绑定到lisview,但当我尝试绑定多个类的数据时,它在xaml中没有显示任何内容。您不能“直接”这样做。 由于所有UIElement控件只有一个BindingContext属性,因此一次只能绑定一个对象 在MVVM模式中,您可以实现ViewModel类来对所有需要的数据进行分组,以显示在相关页面上 因此,对于您的“Listview”,我建议您在ViewModel中创建一个属性,该属性引用一个新对象,该对象只是要连接
UIElement
控件只有一个BindingContext
属性,因此一次只能绑定一个对象
在MVVM模式中,您可以实现ViewModel类来对所有需要的数据进行分组,以显示在相关页面上
因此,对于您的“Listview”,我建议您在ViewModel中创建一个属性,该属性引用一个新对象,该对象只是要连接到Listview的所有类的属性
一个简单的例子:
/// 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实现了一个名为“VmAggregatedDataProp”的类型为ListviewAggregatedData
的属性,则可以有如下内容:
<ListView
BindingContext="{Binding VmAggregatedDataProp}"
Header="{Binding ListViewDataPart1.Title}"
ItemsSource="{Binding ListViewDataPart2.AllMyItems}"
/>
本例中的绑定名称必须替换为您自己的属性。。。
请告诉我是否清楚…您能提供您试图绑定到的xaml和ViewModels的一个片段吗?您就在这里,但我的观点是我通过xml获取数据并将其存储在共享项目的类中,我通过viewmodel访问此数据,但我无法从xaml中的共享项目访问B类。我使用的是共享项目项目用于我的类获取、设置数据,现在我通过视图模型从我的一个共享类获取数据。但我无法显示来自其他共享项目类的数据,我使用的是MVVM方法。