尝试从列表框 WPF powershell 项目中移动项目

问题描述 投票:0回答:1

尝试将一个或多个项目(如果从一个列表框选择)移动到另一个列表框。左侧列表框填充了从 AD 搜索到的用户。然后我想选择一个或多个并将它们移动到右侧的列表框。我的问题是我无法移动它们。下面的代码是搜索功能和移动功能。我是 WPF 的新手,因此通过学习和玩耍来获得一些理解。希望有人能帮忙。

    function SearchDGUserClick
{
    param($sender, $e)

$DGMemberSearchListBox.ItemsSource

$query = $DGUserSearchText.Text
$UserSearch = (Get-ADUser -Filter "Name -like '*$query*'") | Select SamAccountName | Sort -Property SamaAccountName

$DGMemberSearchListBox.ItemsSource = $UserSearch

}

function AddUserClick
{
    param($sender, $e)


#$UserSearch should be an array or collection of user objects
$DGMemberSearchListBox.ItemsSource = $UserSearch

#Handle the button click or any other event that triggers the move
$selectedItems = @()

foreach ($item in $DGMemberSearchListBox.SelectedItems) {
    #If DGMemberAddListBox doesn't have the item yet, add it
    if ($DGMemberAddListBox.Items -notcontains $item) {
        $DGMemberAddListBox.Items.Add($item)
    }

    #Remove the item from DGMemberSearchListBox
    $selectedItems += $item
}

#Remove the selected items from DGMemberSearchListBox
foreach ($item in $selectedItems) {
    $DGMemberSearchListBox.Items.Remove($item)
}

}

也尝试过使用这个,但是当我运行它时,它可以很好地搜索用户,我可以选择一个用户,当我单击“移动”时,它会清除左侧并且不会填充右侧。

提前致谢。

wpf powershell listview
1个回答
0
投票

ItemsSource
Items
集合中添加或删除项目时,不应使用
ListBox
属性。这是一种方式或另一种方式,但不是两者兼而有之。

试试这个:

function SearchDGUserClick
{
  param($sender, $e)

  $query = $DGUserSearchText.Text
  $UserSearch = (Get-ADUser -Filter "Name -like '*$query*'") | Select SamAccountName | Sort -Property SamaAccountName

  foreach ($item in $UserSearch) {
    $DGMemberSearchListBox.Items.Add($item)
  }
}

function AddUserClick
{
  param($sender, $e)

  #Handle the button click or any other event that triggers the move
  $selectedItems = @()

  foreach ($item in $DGMemberSearchListBox.SelectedItems) {
    #If DGMemberAddListBox doesn't have the item yet, add it
    if ($DGMemberAddListBox.Items -notcontains $item) {
      $DGMemberAddListBox.Items.Add($item)
    }

    #Remove the item from DGMemberSearchListBox
    $selectedItems += $item
  }

  #Remove the selected items from DGMemberSearchListBox
  foreach ($item in $selectedItems) {
    $DGMemberSearchListBox.Items.Remove($item)
  }
}

假设您在将项目移动到

DGMemberSearchListBox
之前首先填充
DGMemberAddListBox
,它应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.