首页 > 解决方案 > 如何修复错误,例如不包含“包含”的定义以在列表视图中添加搜索栏

问题描述

我试图在 ListView 中添加一个搜索栏,但失败了。

单击调试程序后,它会在后面的代码部分显示类似“不包含“包含”的定义......

我想为此寻求帮助。谢谢

在后面的代码中:

public partial class ListPage : ContentPage
{
    public ListPage()
    {

        InitializeComponent();

        listView.ItemsSource = LoadData();

 private void SearchBar_Pressed(object sender, EventArgs e)
    {

       var keyword = MainSearchBar.Text;

       listView.ItemsSource = LoadData().Where(name => name.Contains(keyword));

}

//in the following codes is about the function LoadData() 
which includes the information in the ListView 

预计我可以在搜索中搜索关键字承担错误是“错误CS1929:'Video'不包含'Contains'的定义并且最佳扩展方法重载'Enumerable.Contains(IEnumerable,string)'需要'IEnumerable' (CS1929) (MVDemo) 类型的接收器"

请帮忙。谢谢


是的,好的,谢谢,让我在这个程序中发布其他部分。对于 LoadDate(),后面的代码是:

     #region "LoadData"
        protected IList<Video> LoadData()
        {
            var videos = new List<Video>();
            videos.Add(new Video
            {
                ID = "27/items/Final_201903/心相契合Final.mp4",
                Name = "心相契合",
                Writer = "璞園詩歌",
                Photo = ImageSource.FromFile("Heart.png")
            });
            videos.Add(new Video
            {
                ID = "2/items/20191006_769/明光照耀.mov",
                Name = "明光照耀",
                Writer = "璞園詩歌",
                Photo = ImageSource.FromFile("Light.png")
            });

            return videos;
        }
        #endregion

在 xaml 中:

   <StackLayout>
    <SearchBar x:Name="MainSearchBar" SearchButtonPressed="SearchBar_Pressed"/> 
<ListView IsPullToRefreshEnabled="True"  x:Name = "listView"     ItemTapped="Handle_ItemTapped" HasUnevenRows="true" SeparatorVisibility="Default">
      <ListView.ItemTemplate>
          <DataTemplate>
              <ImageCell Text="{Binding Name}"
                        Detail="{Binding Writer}"
                        ImageSource="{Binding Photo}"/>


          </DataTemplate>

      </ListView.ItemTemplate>

      </ListView>

    </StackLayout>

我在“模型”文件中为“视频”类创建了页面,代码是:

public class Video
{
    public Video()
    {

    }
    public string Name { get; set; }
    public ImageSource Photo { get; set; }
    public string Writer { get; set; }
    public string ID { get; set; }


}

请帮帮我。事实上,我是 Xamarin 的新手。谢谢

标签: xamarinsearchxamarin.forms

解决方案


如果要过滤名称,请尝试以下代码。

改变:

listView.ItemsSource = LoadData().Where(name => name.Contains(keyword));

To:名称是您在 Video 类中定义的名称。

listView.ItemsSource = LoadData().Where(name => name.Name.Contains(keyword));

我制作样品进行测试,它对我来说效果很好。

结果:

在此处输入图像描述


推荐阅读