尝试将一个或多个项目(如果从一个列表框选择)移动到另一个列表框。左侧列表框填充了从 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)
}
}
也尝试过使用这个,但是当我运行它时,它可以很好地搜索用户,我可以选择一个用户,当我单击“移动”时,它会清除左侧并且不会填充右侧。
提前致谢。
在
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
,它应该可以工作。