2016-10-23 6 views
1

Ich habe aa searchButton und searchTextBox und möchte sie verwenden, um eine listview zu suchen, was ich möchte ist für die listview seine Auswahl in die Zeile ändern, die den Wert in der ersten Spalte hat und dann würde ich scrollen Sie einfach zur Auswahl. Mein Problem ist, die Elemente in der Listenansicht zugreifen und sie an die Zeichenfolge im Suchtext Box zu vergleichen, hier ist das, was ich als ListviewSuche in einer Listview UWP

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

Wie würde ich Zyklus durch die Listview und vergleichen Sie die searchbox Text in die Zeile/Spaltenwert?

+0

Können Sie erklären, was Sie mit "Was ich möchte, ist für die Listview, um seine Auswahl zu der Zeile, die den Wert in der ersten Spalte hat, und dann würde ich nur scrollview zur Auswahl"? –

+0

Ja, wenn ich also die Daten anzeigen würde, wie in einer Liste von Admin-Namen und Admin-Passwörtern, wenn es über die Listview-Kapazität hinausgeht, wird es eine Bildlaufleiste verwenden, also wenn ich nach unten blättern und ein Element auswählen und scrollen Sie zurück nach oben, wenn ich ctlist.ScrollIntoView (ctlist.SelectedItem); es wird scrollen mich zu dem ausgewählten Element, so dass ich möchte die Liste Auswahl bei einer Suche geändert werden, wo der adminName wäre = Suchtextbox, oder wenn es eine Möglichkeit zum direkten Zugriff auf die Elemente, wenn ich etwas in der Listenansicht auswählen würde – DanielAaron

+0

Also, wenn ich eine Suche machen würde, würde es das Element auswählen und dann konnte ich scrollview zu der Auswahl, dann ist mein Hauptproblem, wie würde ich auf die Daten in der Zeile/Spalte der Auswahl zugreifen, so dass ich andere Schaltflächen verwenden könnte/Funktionen wie Bearbeiten/Entfernen, um die Daten zu bearbeiten – DanielAaron

Antwort

1

Wie würde ich die Listenansicht durchlaufen und den Text des Suchfelds mit dem Zeilen-/Spaltenwert vergleichen?

Sie müssen nicht über die Suche nach dem ListView Steuerelement selbst nachdenken. Tatsächlich sind die Daten in der ListView Bindung von Datensammlung in Ihrem Code-Snippet. Sie können den Suchfeldtext einfach mit den Elementen vergleichen, die Sie an die Listview binden, und das Marschelement als in ListView ausgewählt festlegen.

dann würde ich auf die Auswahl Scroll nur gerade

Dazu versuchen ScrollIntoView Methode zu verwenden. Und ein Codebeispiel abgeschlossen wie folgt:

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

Mehr Details über ListView die official sample Referenz bitte.