ListView 项目不显示

Posted

技术标签:

【中文标题】ListView 项目不显示【英文标题】:ListView items not displaying 【发布时间】:2022-01-22 02:32:45 【问题描述】:

在我的 xamarin 表单应用程序中,我输入了应该在 ListView 中显示的书名。但是 ListView 中没有一行,我不知道我在哪里犯了错误。我同时使用 Prism 和 MVVM。

这里是 xaml

<ListView  SeparatorColor="Black" 
           ItemsSource="Binding BookList"
           HasUnevenRows="True">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <ViewCell>
                                <Label Text="Binding BookName" FontAttributes="Bold"/>
                            </ViewCell>
                        </DataTemplate>
                    </ListView.ItemTemplate>
</ListView>

还有一个列表和方法,在按下按钮后调用。

private BookModel book = new BookModel();
private ObservableCollection<BookModel> _bookList = new ObservableCollection<BookModel>();
private ObservableCollection<BookModel> BookList

   get  return _bookList ; 
   set  SetProperty(ref _bookList , value); 



public async override void getBook(string data)

   book = new BookModel
    
       BookName = data
    ;
    BookList.Add(book);

和模型

public class BookModel

  public string BookName  get; set; 

以前对我有用的只是一个没有任何数据模板的简单 ListView,并通过BookList.Add(data) 将书添加到列表中,其中data 是我在应用程序中输入的内容。

【问题讨论】:

你确定getBook() 被调用了吗? data 的值从何而来? 就像我最后说的 data 是我在应用程序中输入的内容(在这种情况下是书名),getBook() 被调用,因为调用它的方式没有改变,我使用了它之前成功。我进行了调试,data 一切正常。 ObservableCollection 应该是公共属性。如果你想使用绑定 @TomášZachoval 谢谢.. 我什至没有注意到我将其设置为私有:D 【参考方案1】:

在 cmets 中,OP 说公开收藏属性解决了这个问题。他们需要改变这一点:

private ObservableCollection<BookModel> BookList

到这里:

public ObservableCollection<BookModel> BookList

这是基于@Tomáš Zachoval's comment。

【讨论】:

以上是关于ListView 项目不显示的主要内容,如果未能解决你的问题,请参考以下文章

ListView 不显示添加的项目

添加时不显示 ListView 项目

ListView项目不显示

Listview 项目在单击时突出显示(不需要)

如何强制 ListView 忽略单击/不突出显示单击的项目?

C#:在运行时添加项目和子项目时,VirtualMode 中的 ListView 不显示设计时列?