XAML 如何在列表视图中绑定嵌套列表项

oyjwcjzk  于 2023-08-01  发布在  其他
关注(0)|答案(1)|浏览(118)

我想为一个列表做数据绑定,在列表下面,有另一个嵌套列表。以下是我的模型:

public class ChecklistSection
{
    public string Id { get; set; }
    public ChecklistCategory ChecklistCategory { get; set; }
    public List<ChecklistItem> ChecklistItems { get; set; }
}

字符串
下面是我的xaml:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:viewmodels="clr-namespace:xxx.xx.xxx.App.ViewModels"
             x:Class="xx.xx.xxx.App.Views.Checklist"
             x:DataType="viewmodels:ChecklistViewModel">
    <StackLayout>
        <ListView ItemsSource="{Binding ChecklistSections}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout>
                            <Label Text="{Binding ChecklistCategory.Name}" />
                            <ListView ItemsSource="{Binding ChecklistItems}">
                                <ListView.ItemTemplate>
                                    <DataTemplate>
                                        <ViewCell>
                                            <StackLayout>
                                                <Label Text="{Binding ItemName}" />
                                            </StackLayout>
                                        </ViewCell>
                                    </DataTemplate>
                                </ListView.ItemTemplate>
                            </ListView>
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>
</ContentPage>


这是我的viewmodel:

public class ChecklistViewModel : ViewModelBase
{
    private ObservableCollection<ChecklistSection> _checklistSections;
    public ObservableCollection<ChecklistSection> ChecklistSections
    {
        get => _checklistSections;
        set
        {
            if (_checklistSections != value)
            {
                _checklistSections = value;
                OnPropertyChanged(nameof(ChecklistSections));
            }
        }
    }


xaml文件可以识别ChecklistSections,但不能识别ChecklistCategory、ChecklistItems和itemname。我只在视图模型中定义了ChecklistSections。该应用程序不分解,并给予我这个错误:
XFC0045结合:在“xx.xx.xx.App.ViewModels.ChecklistViewModel”上未找到属性“ChecklistCategory”。

kuhbmx9i

kuhbmx9i1#

你需要为每个DataTemplate指定一个DataType

<DataTemplate x:DataType="viewmodels:ChecklistSection">

字符串
和/或

<DataTemplate x:DataType="viewmodels:ChecklistItem">


这允许XAML编译器确定Binding属性使用的正确BindingContext

相关问题