AllowDrop только для некоторых ListBoxItems - PullRequest
0 голосов
/ 13 июня 2011

У меня есть список, представляющий содержимое директории. Я хочу разрешить сброс только на те элементы, которые представляют собой сами каталоги. Я пробовал два подхода:

Сначала я установил источник элементов списка для составного набора всего содержимого каталога и попытался перебрать их с помощью:

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);
}

но потом он просто появляется пустым.

1 Ответ

0 голосов
/ 17 июля 2011

посмотрите на ответ mdm20 wpf treeview блюз. Я хочу выбрать предмет

Просто создайте свойство allowDrop и привяжите его соответствующим образом.

...