我希望有人能帮助我。
Josh Smith写了一篇很棒的文章"WPF apps with the Model-View View-Model",他的文章中包含了下面的code sample。
如果您下载代码示例并运行应用程序并查看所有客户,然后选择一个公司(例如,第4家公司),然后单击“创建新客户”(这将打开新客户的一个选项卡),然后单击“所有客户”选项卡,然后使用键盘尝试将所选项目向上移动到当前所选项目上的项目上,但没有!取而代之的是,选择器再次从顶部开始。
我不确定为什么会发生这种情况,但我希望当你点击时,它会上升一项,而不是从列表的顶部开始。我怀疑这与FocusManager有关,但我不确定。
有人知道为什么控件会以这种方式运行吗?有没有可能,我应该采取什么方法来修改这段代码,并让它不“重置”所选的项目?
我已经实现了一个基于此模板的项目,出于功能原因,我需要让键盘在不重置的情况下上下移动选择器。
发布于 2010-02-07 03:54:47
在您提供的示例中,设置IsSelected属性不会影响逻辑焦点,因此默认设置焦点。我目前考虑的变通方法是强制对codebehind中的元素进行聚焦。例如,将处理程序添加到列表视图的selectionchanged中,如下所示:
private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count == 0 || e.RemovedItems.Count > 0) return;
var item = (CustomerViewModel) e.AddedItems[0];
var container = (UIElement) listView1.ItemContainerGenerator.ContainerFromItem(item);
container.Focus();
}https://stackoverflow.com/questions/2063736
复制相似问题