我有一个列表框,我正在尝试选择代码中的项目。有时会突出显示一个项目,即背景为蓝色,但不同的项目周围有一个方形蓝色框(不突出显示框的空心轮廓)。
我是否正确地说一个是“突出显示”而一个是“已选中”并且我是否正确识别它们?
这应该发生......这两件事情是不同步的吗?
由于 科迪
答案 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样式。