2017-07-13 35 views
0

我正在寫一個Powershell應用程序,它有一堆複選框的列表視圖。 所有GUI都是用XAML編寫的。使用PowerShell中的文本框複選框過濾列表視圖

我想要一個搜索文本框,即過濾複選框並顯示匹配文本的結果。

我想obtaing像在這裏一樣的效果:Cmdlet的助手V2:https://learn-powershell.net/2012/12/02/powershell-and-wpf-listbox/

這裏是我的示例代碼:

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

這個代碼不正確過濾。你知道如何處理這個問題嗎?

回答

1

我沒有太多的PowerShell經驗,但我做了很多WPF的工作。

通常情況下,您無法修改集合,但可以使用foreach進行循環。你將不得不使用反向循環。 (如果您使用循環定期刪除項目時,指標將被搞砸了

你可以嘗試這樣的事情:

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

我沒試過這個代碼,但是從我能找到在谷歌它應該是關閉的東西。