Во-первых, справедливое предупреждение: я полный новичок с C# и WPF.В поле со списком, как определить выделенный элемент (не выбранный элемент)?
У меня есть combobox (редактируемый, доступный для поиска), и я хотел бы иметь возможность перехватить клавишу 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'...
Итак: как мне получить доступ к этому значению? Имейте в виду, что пункт не выбран. Он просто подсвечивается, когда мышь нависает над ним.
Благодарим за помощь.
Вот скриншот, показывающий дисплей отладчика. Я парил над «поле» и когда отображается сводная одна линия, я тогда носился над + полукокса расширить на это изображение:
alt text http://www.freeimagehosting.net/uploads/2cff35d340.gif
Что именно вы имеете в виду, когда вы говорите, что вы можете увидеть box.HighlightedItem в отладчике? Это в окне часов? В ComboBox нет открытого свойства HighlightedItem. –
Я добавил картинку в нижней части сообщения. –