Удобный способ ввода списка в Silverlight 4?
У меня есть приложение, где пользователи будут вводить списки имен. (Существует некоторая коллекция действительных имен.) Я не уверен, что наиболее удобный способ сделать это.
Одна идея: сделать текстовое поле. Если текстовое поле теряет фокус и содержимое является допустимым именем, добавьте его в список. Если пользователь выбирает запись в списке и нажимает кнопку "Удалить", удалите ее.
Код:
MainPage.xaml.cs:
private void WhoOwesInput_LostFocus(object sender, RoutedEventArgs e)
{
if (people.Contains(WhoOwesInput.Text))
{
WhoOwesListBox.Items.Add(WhoOwesInput.Text);
WhoOwesInput.Text = String.Empty;
}
}
private void WhoOwesListBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Delete || e.Key == Key.Back)
{
WhoOwesListBox.Items.Remove(WhoOwesListBox.SelectedItem);
}
}
MainPage.xaml:
<sdk:AutoCompleteBox Height="23" HorizontalAlignment="Left" Margin="337,205,0,0" Name="WhoOwesInput" VerticalAlignment="Top" Width="74" ValueMemberBinding="{Binding}" LostFocus="WhoOwesInput_LostFocus" />
<ListBox Height="100" HorizontalAlignment="Left" Margin="337,232,0,0" Name="WhoOwesListBox" VerticalAlignment="Top" Width="74" KeyDown="WhoOwesListBox_KeyDown" />
Я новичок в SL, поэтому я боюсь, что могу упустить некоторые элементы управления или предпочитаемый способ работы. Любой совет?
Благодарю.
2 ответа
Прежде всего, сделайте то же самое для клавиши Enter, как указано выше. Однако, если вы получаете гораздо больше информации, которую вы хотите, чтобы ваши пользователи вводили, вам следует подумать об улучшении дизайна.
Silverlight имеет отличный механизм привязки данных, говоря о том, что речь идет о свойствах зависимостей привязки данных элементов управления (ItemSource из списка) для определения свойств отдельного класса, который является DataContext вашего файла xaml. То, что я описал в этом одном вкладыше, является частью известного шаблона представления - модели или, как его называет Microsoft. MVVM. Итак, когда вы новичок в Silverlight, узнайте об этих концепциях, которые сделают вашу жизнь проще.
В настоящее время вы можете сделать то, что сказал Крис выше.
Это для групповой записи, где будет сидеть оператор и вводить список имен из какого-то источника, например, из бумажного списка или чего-то еще?
Если это так, то я думаю, что ввод данных должен быть как можно более гладким. Эти операторы, которые делают подобные вещи изо дня в день, обычно молниеносны и точны.
Таким образом, одним из вариантов будет то, что как только оператор нажимает клавишу ввода в текстовом поле, содержимое перемещается в список, текстовое поле очищается и готово для следующей записи. Таким образом, оператор никогда не покидает клавиатуру. Просто введите имя, нажмите Enter, введите следующее имя и т. Д.
Если оператор неправильно набрал имя, оператор может нажать вкладку, чтобы перейти к списку, который сразу же выберет введенную фамилию. Оператор может либо нажать клавишу Del, чтобы удалить запись, либо Ins, чтобы отредактировать, редактирование удалит имя из списка, поместит его обратно в текстовое поле и установит фокус на текстовое поле, чтобы оператор мог редактировать имя.
Из коробки я не думаю, что есть какие-то специальные элементы управления, которые будут обрабатывать эту навигацию клавиатуры для вас. Вы должны будете сами справиться с итерацией, конечно, в SL это не невероятно больно.