将键盘选择与ListBox中的SelectedItem同步

时间:2009-12-16 14:08:07

标签: silverlight silverlight-3.0 listbox

当使用Silverlight ListBox时,我可以通过分配给SelectedItem或SelectedIndex来可编程地选择项目,并且我可以确保使用ScrollIntoView方法对用户可见所选项目。

执行此操作正确选择项目(该项目的背景为蓝色),但键盘焦点保留在列表中的第一项(第一项具有虚线边框)。结果是当用户按下或按下以更改选择时,选择跳转到顶部。

如何更改ListBox控件中的“focus”项以匹配我可编程选择的项?

1 个答案:

答案 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;
    }
}

那应该适合你。

祝你好运,
Jim McCurdy
YinYangMoney