2017-07-13 2 views
0

Ich schreibe eine Powershell-Anwendung, die eine Listview mit einer Reihe von Kontrollkästchen hat. Alle GUI ist in XAML geschrieben.Filtern von Listview mit Checkboxes mit Textfeld in Powershell

Ich möchte ein Such-Textfeld haben, das die Kontrollkästchen ausfiltert und Ergebnisse anzeigt, die dem Text entsprechen.

Ich möchte die gleiche Wirkung obtaing wie hier: Cmdlets Helper V2: https://learn-powershell.net/2012/12/02/powershell-and-wpf-listbox/

Hier ist mein Beispielcode:

$searcher.Add_TextChanged{(
    AA 
)} 

function AA(){ 

    if($searcher.Text -ne "") 
    { 
     foreach($item in $checkedListView.Items) 
      { 
      if ($item.ToString() -imatch $searcher.Text.ToLower()) #tried also with -like, -eq etc. 
      { } 
      else { 
       $checkedListView.Items.Remove($item) 
       break 
      } 
      } 
      if($checkedListView.SelectedItems.Count -eq 1) 
      { 
       $checkedListView.Focus() 
      } 
    } 
    else 
    { 
     Load 
    } 
} 

Dieser Code nicht richtig gefiltert werden. Wissen Sie, wie Sie mit diesem Problem umgehen können?

Antwort

1

Ich habe nicht zu viel Erfahrung mit PowerShell, aber ich habe eine Menge WPF-Arbeit gemacht.

Normalerweise können Sie eine Sammlung nicht ändern, während Sie sie mit einer foreach Schleife umwandeln. Sie müssen eine umgekehrte Schleife verwenden. (Wenn Sie eine regelmäßige for-Schleife werden die Indizes nach oben geschraubt werden beim Entfernen von Einträgen

Sie so etwas wie dies versuchen:.

for($idx = $checkedListView.Items.Count - 1; $idx -ge $checkedListView.Items.Count; $idx++) 
{ 
    $item = $checkedListView[$idx]; 
    if ($item.ToString() -imatch $searcher.Text.ToLower()) #tried also with -like, -eq etc. 
    { } 
    else { 
     $checkedListView.Items.Remove($item) 
     break 
    } 
} 

ich diesen Code nicht versucht, aber von dem, was ich finden konnte Bei Google sollte es etwas nahes sein