我想为一个列表做数据绑定,在列表下面,有另一个嵌套列表。以下是我的模型:
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”。
1条答案
按热度按时间kuhbmx9i1#
你需要为每个
DataTemplate
指定一个DataType
。字符串
和/或
型
这允许XAML编译器确定
Binding
属性使用的正确BindingContext