1

您好,我如何通过 xaml 将多个类的数据绑定到单个列表视图。我成功地将数据从单个类绑定到 lisview,但是当我尝试绑定多个类的数据时,它在 xaml 中没有显示任何内容。

4

1 回答 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 回答