AllowDrop仅适用于某些ListBoxItems

时间:2011-06-13 10:38:56

标签: c# wpf listboxitem

我有一个表示目录内容的列表框。我想只允许删除那些代表目录的项目。我尝试了两种方法:

首先,我将列表框的itemsource设置为所有目录内容的compositeCollection,并尝试遍历以下内容:

foreach (ListBoxItem lbItem in directoryExplorer.Items)
{
    MessageBox.Show(lbItem.DataContext.GetType().ToString());
}

消息框为每个项目提供“目录”或“用户文件”。我希望能够访问这些项目,检查它们代表什么,并根据需要设置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);
}

然后它只是空白。

1 个答案:

答案 0 :(得分:0)

查看mdm20的回答wpf treeview blues. I want to select an item

只需创建一个allowDrop属性并适当地绑定它。