当使用Silverlight ListBox时,我可以通过分配给SelectedItem或SelectedIndex来可编程地选择项目,并且我可以确保使用ScrollIntoView方法对用户可见所选项目。
执行此操作正确选择项目(该项目的背景为蓝色),但键盘焦点保留在列表中的第一项(第一项具有虚线边框)。结果是当用户按下或按下以更改选择时,选择跳转到顶部。
如何更改ListBox控件中的“focus”项以匹配我可编程选择的项?
答案 0 :(得分:2)
在列表框容器中的所需事件(在已加载等)上尝试在列表框中调用我的自定义焦点设置功能(FocusEx)。
internal static class ControlExt
{
// Extension for Control
internal static bool FocusEx(this Control control)
{
if (control == null)
return false;
bool success = false;
if (control == FocusManager.GetFocusedElement())
success = true;
else
{
// To get Focus() to work properly, call UpdateLayout() immediately before
control.UpdateLayout();
success = control.Focus();
}
ListBox listBox = control as ListBox;
if (listBox != null)
{
if (listBox.SelectedIndex < 0 && listBox.Items.Count > 0)
listBox.SelectedIndex = 0;
}
return success;
}
}
那应该适合你。
祝你好运,