我有一个表示目录内容的列表框。我想只允许删除那些代表目录的项目。我尝试了两种方法:
首先,我将列表框的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);
}
然后它只是空白。
答案 0 :(得分:0)
查看mdm20的回答wpf treeview blues. I want to select an item
只需创建一个allowDrop属性并适当地绑定它。