搜索listview uwp

时间:2016-10-23 00:25:13

标签: listview search uwp

我有一个searchButton和searchTextBox并希望用它们来搜索列表视图,我希望listview将其选择更改为在第一列中具有值的行然后我只是将scrollview转到选择。我的问题是访问listview中的元素并将它们与searchtext框中的字符串进行比较,这是我作为listview的内容

  <ListView x:Name="ctlist" HorizontalAlignment="Center" Height="400" Margin="0,0,0,0" VerticalAlignment="Center" Width="1000" Background="AntiqueWhite">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid Width="{Binding ElementName=ctlList, Path=ActualWidth }" Padding="0" Margin="0" >
                <Grid.ColumnDefinitions>
                        <ColumnDefinition x:Name="adminID" Width="100"/>
                        <ColumnDefinition x:Name="adminPASS" Width="100" />
                        <ColumnDefinition Width="100" />
                    </Grid.ColumnDefinitions>
                    <TextBlock x:Name="adName" Text="{Binding Path=adminName}" Grid.Column="0" TextWrapping="Wrap" />
                    <TextBlock Text="{Binding Path= adminPass}" Grid.Column="1" TextWrapping="Wrap"/>
                </Grid>

        </DataTemplate>
    </ListView.ItemTemplate>

    </ListView>

如何循环浏览列表视图并将搜索框文本与行/列值进行比较?

1 个答案:

答案 0 :(得分:1)

  

如何循环浏览列表视图并将搜索框文本与行/列值进行比较?

您无需考虑搜索ListView控件本身。实际上,ListView中显示的数据与您的代码段中的数据收集绑定。您只需将搜索框文本与绑定到Listview的项目进行比较,然后在ListView中将行军项目设置为已选中。

  

然后我会滚动到选择

为此,只需尝试使用ScrollIntoView方法。 一个完整的代码示例如下:

public sealed partial class ListViewSearch : Page
{
    ObservableCollection<admin> admins = new ObservableCollection<admin> { };
    public ListViewSearch()
    {
        this.InitializeComponent();
        for(int i=1;i<30;i++)
        {
            admin item = new admin { adminName = "ID" + i, adminPass = "password" + i };
            admins.Add(item);
        }         
        ctlist.ItemsSource = admins;
    }

    private void btnsearch_Click(object sender, RoutedEventArgs e)
    {
        string searchtext = txtserch.Text;
        foreach(admin adminitem in admins)
        {
            if(adminitem.adminName.Contains(searchtext))
            {
                ctlist.SelectedItem = adminitem;
                ctlist.ScrollIntoView(ctlist.SelectedItem);
                break;
            }
        }

    }
}
public class admin
{
    public string adminName { get; set; }
    public string adminPass { get; set; }
}

有关ListView的更多详情,请参阅official sample