【问题标题】:searching a listview uwp搜索列表视图 uwp
【发布时间】:2016-10-25 18:01:18
【问题描述】:

我有一个 searchButton 和 searchTextBox 并想用它们来搜索一个列表视图,我想要列表视图将其选择更改为在第一列中具有值的行,然后我只需滚动视图到选择.我的问题是访问列表视图中的元素并将它们与搜索文本框中的字符串进行比较,这是我作为列表视图所拥有的

  <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>

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

【问题讨论】:

  • 您能解释一下“我希望列表视图将其选择更改为在第一列中具有值的行,然后我只需滚动视图即可选择”是什么意思吗?
  • 是的,所以如果我要显示数据,如在管理员名称和管理员密码列表中,如果超出列表视图容量,它将使用滚动条,所以如果我向下滚动到底部并选择一个项目并滚动回顶部,当我执行 ctlist.ScrollIntoView(ctlist.SelectedItem);它会将我滚动到所选项目,因此我希望在搜索时将列表选择更改为 adminName = searchtextbox 的位置,或者当我在列表视图中选择某些内容时,是否有办法直接访问这些项目
  • 所以,如果我要进行搜索,它将选择项目,然后我可以滚动查看选择,那么我的主要问题是如何访问选择的行/列中的数据这样我就可以使用其他按钮/功能,如编辑/删除来操作数据

标签: listview search uwp


【解决方案1】:

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

您无需考虑搜索ListView 控件本身。实际上,ListView 中显示的数据是从您的代码 sn-p 中的数据收集绑定的。您只需将搜索框文本与您绑定到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

【讨论】:

    猜你喜欢
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 2011-07-13
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    相关资源
    最近更新 更多