silverlight 3列表框项目突出显示与选中

时间:2010-04-19 22:50:08

标签: silverlight listbox selecteditem listboxitem

我有一个列表框,我正在尝试选择代码中的项目。有时会突出显示一个项目,即背景为蓝色,但不同的项目周围有一个方形蓝色框(不突出显示框的空心轮廓)。

我是否正确地说一个是“突出显示”而一个是“已选中”并且我是否正确识别它们?

这应该发生......这两件事情是不同步的吗?

由于 科迪

2 个答案:

答案 0 :(得分:1)

刚刚打了这个问题。 虽然列表框滚动查看器也会自动滚动列表框中的所选项目,但第一个项目将具有焦点,当您描述键盘交互时,然后使用列表中的第一个项目操作,而不是选择项目。

对我们来说,修复是

            this.MyListBox.UpdateLayout(); 
            this.MyListBox.Focus();
            this.MyListBox.SelectedItem = MyObject;
            this.MyListBox.ScrollIntoView(this.MyListBox.SelectedItem);

行动的顺序似乎非常重要。

这是使用ListBox内部scrollviewer。

答案 1 :(得分:0)

具有蓝色突出显示背景的项目是SelectedItem。带有蓝色矩形的项目是当前认为它具有焦点的项目。

通常,Focus矩形会一起找到所选填充,因为所选项目通常会随着鼠标单击而改变,这也会将焦点带到同一个元素。然而,例如代码可能会改变所选项目,而ListBox仍然具有焦点。在这种情况下,所选突出显示将移动新选择的项目,但焦点矩形将保持原样。 (请注意pendatic我在描述用户看起来的内容,而不是引擎盖下的实际工作方式)。

要了解正在发生的事情,请参阅ListBox Styles and Templates文档中的ListBoxItem样式。