我在尝试将元素添加到可观察集合时遇到了一些问题,对于我的xamarin.forms应用程序。这是一个代码示例:
public partial class ItemListPage : ContentPage
{
public ObservableCollection<string> Elements { get; set; } = new ObservableCollection<string>();
public ItemListPage()
{
InitializeComponent();
ElementsView.ItemsSource = Elements;
}
public async void OnAddButtonClicked()
{
string result = await GetCodeAsync();
if (result != null)
{
try
{
Elements.Add(result);
}catch(Exception exc)
{
throw exc;
}
}
}}`
这里有一个我的Xaml代码示例:
<ListView x:Name="ElementsView">
<ListView.ItemTemplate>
<DataTemplate>
<StackLayout>
<Label Text="PlaceHolderText" />
</StackLayout>
</StackLayout>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
从try catch部分,我得到一个InvalidCastException,但我不知道为什么!我错过了什么吗?应该是一个可以隐藏的集合的元素,实现一个特定的接口?非常感谢你!
答案 0 :(得分:5)
DataTemplate元素的子元素必须是ViewCell类型或源自ViewCell类型。
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout>
<Label Text="PlaceHolderText" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>