【发布时间】:2021-09-15 06:27:45
【问题描述】:
我在模型中定义了以下类:
public class Equipment
{
public Equipment(string resName, DateTime crTime, int quant)
{
ResourceName = resName;
CreateTime = crTime;
Quantity = quant;
}
public string ResourceName { get; set; }
public DateTime CreateTime { get; set; }
public int Quantity { get; set; }
}
我使用了一个 viewModel,我将其定义为
class EquipementViewModel : ObservableObject
{
ObservableCollection<Equipment> equipRange = new ObservableCollection<Equipment>();
public ObservableCollection<Equipment> EquipRange { get { return equipRange; } }
public EquipementViewModel()
{
equipRange.Add(new Equipment("Komax01",DateTime.Now,1));
equipRange.Add(new Equipment("Komax02", DateTime.Now, 1));
equipRange.Add(new Equipment("Komax03", DateTime.Now, 1));
}
}
最后是 View XAML
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:viewmodels="clr-namespace:TestXamarin.ViewModels"
x:Class="TestXamarin.Views.EquipementPage"
Title="EQuip"
x:DataType="viewmodels:EquipementViewModel">
<ContentPage.BindingContext>
<viewmodels:EquipementViewModel/>
</ContentPage.BindingContext>
<ListView ItemsSource="{Binding EquipRange}" BackgroundColor="Transparent">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell TextColor="black" Text="{Binding ResourceName}">
<TextCell.BindingContext>
<viewmodels:EquipementViewModel/>
</TextCell.BindingContext></TextCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage>
我希望 TextCell 显示 Equipment 类的 ResourceNasme,但 VIsual Studio 向我显示了一个错误,即 Member not found in the Data Context "Equipment View Model"。
我看了很多指南,我不认为我做错了什么。可能是什么问题?
【问题讨论】:
-
您不需要为 TextCell 指定 BindingContext
-
@Jason 但是文本单元如何仅显示 ResourceName 而不是所有 3 个字段?
-
我说要删除 BindingContext,而不是
{Binding ResourceName}。模板会自动继承正确的上下文,你不需要指定它 -
@Jason 很遗憾不能正常工作。我现在试过了,但我以前也试过
标签: xaml xamarin.forms mvvm data-binding