Sha*_*ean 5 silverlight listbox listboxitem wcf-ria-services
当我ListBox
使用RIA服务填充时,会自动选择一个项目.这会触发SelectionChanged
事件.如果我使用箭头键向上或向下移动选择,则事件也会被触发.
我不想要这个.我希望用户按回车或单击要选择的项目.我该如何做到这一点?
您可以处理MouseLeftButtonDown
和KeyDown
事件ListBox
。对于该KeyDown
事件,您需要检查EventArgs
以确定是否按下了 Enter 键(与任何其他键相反)。
即使未选择项目(例如,如果用户在ListBox
实际项目内单击但未在实际项目上单击),这些事件也可能会触发,因此在您的事件处理程序中,您应该检查这一点。
您的事件处理程序可能如下所示:
public void MyListBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
ItemSelected();
}
public void MyListBox_KeyDown(object sender, KeyEventArgs e)
{
if ((e.Key & Key.Enter) == Key.Enter)
{
ItemSelected();
}
}
public void ItemSelected()
{
if (MyListBox.SelectedItem != null)
{
// Handle item selection here
}
}
Run Code Online (Sandbox Code Playgroud)
这些不在我的脑海中,因此您可能需要稍微调整它们以使它们完全正确地工作。但希望你能看到总体思路。
另一种方法是SelectionChanged
在填充ListBox
项目时简单地删除事件处理程序(使用“ -=
”语法),然后在此操作完成后重新附加它。
我建议这样做(因为您担心填充列表时会触发事件)。它不会阻止用户使用向上和向下箭头键选择项目,但除非你有一个很好的理由这样做,否则你会让事情变得不必要的不方便(用户不想被任意限制做那些应该工作)。
归档时间: |
|
查看次数: |
4638 次 |
最近记录: |