gpt4 book ai didi

c# - listBox.ItemContainerGenerator.ContainerFromItem为null

转载 作者:行者123 更新时间:2023-12-03 10:28:30 27 4
gpt4 key购买 nike

我使用以下代码来更改列表框特定项目的颜色,例如从灰色显示为灰色,或者更改为灰色,而不是黑色(当您从列表框D&D到文本框进行D转换时(用户指示此特定项目已被拖动)),问题在这里,lbi总是被归为null,为什么不知道?调试时,用户对象是已拖动的正确项目,并且列表框不为空。也许我需要做其他事情?

也许有不同的方法可以做到这一点?

private void DropText_PreviewDrop(object sender, DragEventArgs e)
{
...
DataObject data = e.Data as DataObject;
User user = data.GetData(typeof(User)) as User;

ListBoxItem lbi = listBox.ItemContainerGenerator.ContainerFromItem(user) as ListBoxItem;
if (lbi != null)
lbi.Foreground = Brushes.Gray;

最佳答案

从MSDN上的 ItemContainerGenerator.ContainerFromItem Method页面:

Returns null if the item does not belong to the item collection, or if a UIElement has not been generated for it.



因此,这意味着您的 user对象不是 listBox.Items集合中的实际项目,或者 listBox不是包含 ListBox对象的实际 user对象。如果在 User类中具有唯一属性,则可以像这样从 User集合中检索实际的 ListBox对象:
User actualUser = listBox.Items.Cast<User>().Where(u => u.Id == user.Id);

然后,您应该可以执行以下操作:
ListBoxItem lbi = listBox.ItemContainerGenerator.ContainerFromItem(actualUser)
as ListBoxItem;

关于c# - listBox.ItemContainerGenerator.ContainerFromItem为null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21958159/

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