gpt4 book ai didi

c# - 拖放选定的项目作为列表框返回null

转载 作者:行者123 更新时间:2023-12-03 10:59:35 25 4
gpt4 key购买 nike

我使用以下代码进行拖放和以下语句

当我在调试中检查它时返回null,这是什么问题?

var mySelectedItem = listbox1.SelectedItem作为ListBoxItem;

public MainWindow()
{

InitializeComponent();
_UsersList.Add(new User {Name = "Mike"});
_UsersList.Add(new User { Name = "Nick" });
listbox1.ItemsSource = _UsersList;

}

public ObservableCollection<User> userList
{
get { return _UsersList; }
}

private void listbox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count > 0 && string.IsNullOrEmpty(textbox1.Text))
{
if (listbox1.SelectedItems.Count > 0)
{
var mySelectedItem = listbox1.SelectedItem as ListBoxItem;
if (mySelectedItem != null)
{
DragDrop.DoDragDrop(listbox1, DragDropEffects.Copy);
}
}
}
}

xaml是
<ListBox x:Name="listbox1" HorizontalAlignment="Left" Height="115" Margin="100,75,0,0" 
VerticalAlignment="Top" Width="150" ItemsSource="{Binding userList}"
SelectionChanged="listbox1_SelectionChanged" >

更新:

当我将lilstBOXItem更改为 用户或使用以下答案中提出的建议时,im出现了不同的错误:
 var mySelectedItem = listbox1.ItemContainerGenerator
.ContainerFromItem(listbox1.SelectedItem) as ListBoxItem;



private void textbox1_PreviewDrop(object sender, DragEventArgs e)
{
string name = e.Data.GetData(DataFormats.StringFormat).ToString();
textbox1.Text += name;
textbox1.Focus();
textbox1.CaretIndex = textbox1.Text.Length;
e.Handled = true;
listbox1.Items.Remove(listbox1.SelectedItem);
}

listbox1.Items.Remove(listbox1.SelectedItem);中的错误
该语句负责删除从列表框中选择并拖动到文本框中的项目
peration is not valid while ItemsSource is in use. Access and modify elements with ItemsControl.ItemsSource instead."}

最佳答案

SelectedItem将为User类型。

如果您想获取容器,即ListBoxItem,可以通过以下方式获取:

var mySelectedItem = listBox1.ItemContainerGenerator
.ContainerFromItem(listBox1.SelectedItem) as ListBoxItem;

这将为您提供实际的容器,该容器承载了User类型的对象。

更新

代替
listbox1.Items.Remove(listbox1.SelectedItem);

您应该从ItemsSource集合中删除它,因为它是 ObservableCollection<User>,它将自动更新UI。
_UsersList.Remove(listBox1.SelectedItem)

关于c# - 拖放选定的项目作为列表框返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20936267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com