我尝试在Xamarin.Forms应用程序中向ObservableCollection添加元素时出现InvalidCastException

时间:2017-07-10 09:33:49

标签: c# xaml xamarin observablecollection

我在尝试将元素添加到可观察集合时遇到了一些问题,对于我的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,但我不知道为什么!我错过了什么吗?应该是一个可以隐藏的集合的元素,实现一个特定的接口?非常感谢你!

1 个答案:

答案 0 :(得分:5)

DataTemplate元素的子元素必须是ViewCell类型或源自ViewCell类型。

<ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout>
                        <Label Text="PlaceHolderText" />
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>