我在WPF中有一些奇怪的ListView控件行为.
我们正在用C#开发应用程序.
我用一些项创建了ListView,并将SelectedIndex设置为列表中间的某个索引.然后我在ListView上的任何位置单击鼠标,然后使用Up/Dows键盘键导航,一切正常.但是,如果我将焦点移动到另一个控件,然后尝试以编程方式将焦点设置回ListView控件,那么我就会遇到问题.
ListView获得焦点,但是当我尝试使用键盘导航时,将取消当前选择并选择第一个项目,导航将从列表中的第一个项目开始.
我通过调用它的.Focus()方法将焦点设置到ListView控件.
它看起来甚至是ListView控件的焦点,但实际上没有项目在焦点上,即使SelectedIndex有一些有效值.
请帮我!如何以编程方式将焦点设置为ListView控件以防止此类行为?
我发现我的listview选择索引与焦点项目不同.谁 ???
在selectedindex_changed事件中,我将所选索引设置为修复项目(5),但是当我按箭头键时,项目已更改.这意味着所选索引固定为5,但当前项目(以其周围的点边框显示)移动到箭头键位置.无论如何,我的选择项固定为5,但我的滚动视图移动到当前项目的位置.
此代码在listView1_SelectionChanged中:listView1.SelectionMode = SelectionMode.Single; listView1.SelectedIndex = 5;
我的listview有一个修改过的视图:
<l:PlainView x:Key="tileView"
ItemTemplate="{StaticResource centralTile}"
ItemHeight="120" ItemWidth="130" />
Run Code Online (Sandbox Code Playgroud)
我不再知道问题了解.
问候
ListView可能遇到与ListBox相同的问题,因为它可以独立于其项目而具有焦点.
当我想要关注ListBox时,我需要做这样的事情:
listBox1.Focus();
if (listBox1.Items.Count > 0)
{
var index = listBox1.SelectedIndex;
if (index < 0) index = 0;
var item = listBox1.ItemsContainerGenerator
.ContainerFromIndex(index) as ListBoxItem;
item.Focus();
}
Run Code Online (Sandbox Code Playgroud)
因此,这会聚焦ListBox,但是如果ListBox包含任何项目,则它会聚焦所选项目,或者如果选择了一个项目则聚焦第一项目.
我从来没有在WPF中使用ListView,但可能你可以使用ListView而不是ListBox和ListViewItem代替ListBoxItem 来破解类似的方法.
| 归档时间: |
|
| 查看次数: |
6287 次 |
| 最近记录: |