Во-первых, честное предупреждение: я новичок в C # и WPF.
У меня есть комбинированный список (редактируемый, доступный для поиска), и я хотел бы иметь возможность перехватить клавишу Delete и удалить выделенный в данный момент элемент из списка. Я ищу поведение, подобное поведению MS Outlook при вводе адресов электронной почты. Когда вы даете несколько символов, отображается раскрывающийся список возможных совпадений. Если вы перейдете к одному из них (с помощью клавиш со стрелками) и нажмете «Удалить», эта запись будет удалена навсегда. Я хочу сделать это с помощью записи в выпадающем списке.
Вот XAML (упрощенно):
<ComboBox x:Name="Directory"
KeyUp="Directory_KeyUp"
IsTextSearchEnabled="True"
IsEditable="True"
Text="{Binding Path=CurrentDirectory, Mode=TwoWay}"
ItemsSource="{Binding Source={x:Static self:Properties.Settings.Default},
Path=DirectoryList, Mode=TwoWay}" />
Обработчик:
private void Directory_KeyUp(object sender, KeyEventArgs e)
{
ComboBox box = sender as ComboBox;
if (box.IsDropDownOpen && (e.Key == Key.Delete))
{
TrimCombobox("DirectoryList", box.HighlightedItem); // won't compile!
}
}
При использовании отладчика я вижу, что box.HighlightedItem
имеет значение, которое я хочу, но когда я пытаюсь вставить этот код, он не может скомпилироваться с:
System.Windows.Controls.ComboBox' does not contain a definition for 'HighlightedItem'...
Итак: как мне получить доступ к этому значению? Имейте в виду, что для элемента не выбран . Он просто подсвечивается, когда над ним наводится мышь.
Спасибо за вашу помощь.
Вот скриншот, показывающий отображение отладчика. Я завис над «рамкой» и, когда отобразилась однострочная сводка, я затем завис над + char, чтобы развернуть это изображение:
альтернативный текст http://www.freeimagehosting.net/uploads/2cff35d340.gif