Xamarin.Forms在ListView中显示文本而不是typename

时间:2017-11-23 16:11:13

标签: listview xamarin xamarin.forms

enter image description here

我正在用项目填充Xamarin.Forms.ListView。

public class LCIDEditor : ContentPage
{
    private ListView _lv;
    private ObservableCollection<TextCell> _ItemList = new ObservableCollection<TextCell>();

    public LCIDEditor()
    {
        this.Title = "LCIDEditor";

        _ItemList.Add(new TextCell { Text = "Englisch", Detail = "1033" });
        _ItemList.Add(new TextCell { Text = "Deutsch", Detail = "1031" });

        _lv = new ListView();
        _lv.ItemsSource = _ItemList;
        _lv.ItemTemplate = new DataTemplate(typeof(TextCell));

        this.Content = _lv;
    }
}

在最好的情况下,我得到listview以在ListView中显示类似“Xamarin.Forms.TextCell”的内容而不是任何真实文本。

如果我包括

_lv.ItemTemplate = new DataTemplate(typeof(TextCell));

,我什么也看不见,列表视图一直是空白。

有人能告诉我这里我做错了什么吗? 我仔细阅读了文档,但是它们没有帮助,我看到其他人提出同样的问题,但在其他情况下。

我正试图处理这个(显然不是那么)简单的例子。

1 个答案:

答案 0 :(得分:1)

尝试这种方式:

public class LCIDEditor : ContentPage
{
    private ListView _lv;
    private ObservableCollection<object> _ItemList = new ObservableCollection<object>();

    public LCIDEditor()
    {
        this.Title = "LCIDEditor";

        _ItemList.Add(new { Text = "Englisch", Detail = "1033" });
        _ItemList.Add(new { Text = "Deutsch", Detail = "1031" });

        _lv = new ListView() 
        {
            ItemTemplate = new DataTemplate(typeof(TextCell)), 
            ItemsSource = _ItemList
        };

        this.Content = _lv;
    }
}
  • TextCell必须像模板一样使用,而不是像item;
  • 当DataTemplate的ViewCell未绑定或对象的类型未被识别为有效项时,它会显示ToList()结果 - 默认为类型名称。

你应该测试代码,我没有在这里运行它。

我希望它适合你