我有一个应用程序,用户将在其中输入名称列表。 (有一些有效名称的集合。)我不确定用户最友好的方式是什么。
一个想法:制作一个文本框。如果文本框失去焦点,并且内容是有效名称,请将其添加到列表框中。如果用户在列表框中选择一个条目并点击 delete ,则将其删除。
代码:
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的新手,所以我担心我可能会错过一些控件或首选的做事方式。有什么建议吗?
感谢。
答案 0 :(得分:0)
这是一个批处理条目,其中一个opertor会坐下来输入某些来源的名称列表,如纸质列表或什么?
如果是这样,那么我认为数据输入应该尽可能光滑。这些日复一日做这类事情的操作员通常都是快速准确的。
因此,一个选项是,一旦操作员点击文本框上的 Enter 键,内容就会移动到列表中,文本框将被清除并准备好进入下一个条目。这样操作员永远不会离开键盘。只需输入名称,点击输入,输入下一个名称等。
如果操作员输错了名称,操作员可以按Tab键导航到列表,该列表将立即选择输入的姓氏。操作员可以按 Del 键删除条目或 Ins 进行编辑,编辑将从列表中删除名称,将其放回文本框并将焦点设置为文本框以便操作员可以编辑名称。
开箱即用,我认为没有任何特殊控件可以为您处理此键盘导航。你需要自己处理迭代,当然在SL中,不非常痛苦。
答案 1 :(得分:0)
首先对前面提到的Enter键执行相同的操作。 但是,如果您想要提供更多信息,希望用户输入数据,那么您应该考虑更好的设计。
Silverlight有一个很好的数据绑定机制,谈到这个,它是关于控件(列表框的ItemSource)的数据绑定依赖属性到一个单独的类的clr属性,它是xaml文件的DataContext。我在这个内容中描述的是着名的Presentation - Model模式的一部分,或者微软称之为。 MVVM。因此,当您是Silverlight的新手时,请了解这些将使您的生活更轻松的概念。
目前,你可以做克里斯上面所说的话。