AllowDrop仅用于某些ListBoxItems

| 我有一个列表框,该列表框表示目录的内容。我只允许删除代表目录本身的那些项目。我尝试了两种方法: 首先,我将列表框的itemsource设置为所有目录内容的CompositeCollection,并尝试使用以下命令进行迭代:
foreach (ListBoxItem lbItem in directoryExplorer.Items)
{
    MessageBox.Show(lbItem.DataContext.GetType().ToString());
}
每个项目的消息框都带有\'Directory \'或\'UserFile \'。我希望可以访问这些项目,检查它们代表什么,并根据需要设置AllowDrop。 我的第二种方法是添加单个项目,如下所示: ListBoxItem nxt;
foreach (Directory d in dir.childdirs)
{
    MessageBox.Show(d.name);
    nxt = new ListBoxItem();
    nxt.DataContext = d;
    nxt.AllowDrop = true;
    nxt.Name = d.name;
    directoryExplorer.Items.Add(nxt);
}
foreach (UserFile f in dir.childfiles)
{
    MessageBox.Show(f.name);
    nxt = new ListBoxItem();
    nxt.AllowDrop = false;
    nxt.DataContext = f;
    nxt.Name = f.name;
    directoryExplorer.Items.Add(nxt);
}
但后来它变成空白。     
已邀请:
        看看mdm20的答案wpf treeview蓝调。我要选择一个项目 只需创建一个allowDrop属性并适当地绑定它即可。     

要回复问题请先登录注册