首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在WPF中修复用户控件上的集合控件中的选定项(使用MVVM实现

如何在WPF中修复用户控件上的集合控件中的选定项(使用MVVM实现
EN

Stack Overflow用户
提问于 2010-01-14 19:32:03
回答 1查看 185关注 0票数 1

我希望有人能帮助我。

Josh Smith写了一篇很棒的文章"WPF apps with the Model-View View-Model",他的文章中包含了下面的code sample

如果您下载代码示例并运行应用程序并查看所有客户,然后选择一个公司(例如,第4家公司),然后单击“创建新客户”(这将打开新客户的一个选项卡),然后单击“所有客户”选项卡,然后使用键盘尝试将所选项目向上移动到当前所选项目上的项目上,但没有!取而代之的是,选择器再次从顶部开始。

我不确定为什么会发生这种情况,但我希望当你点击时,它会上升一项,而不是从列表的顶部开始。我怀疑这与FocusManager有关,但我不确定。

有人知道为什么控件会以这种方式运行吗?有没有可能,我应该采取什么方法来修改这段代码,并让它不“重置”所选的项目?

我已经实现了一个基于此模板的项目,出于功能原因,我需要让键盘在不重置的情况下上下移动选择器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-07 03:54:47

在您提供的示例中,设置IsSelected属性不会影响逻辑焦点,因此默认设置焦点。我目前考虑的变通方法是强制对codebehind中的元素进行聚焦。例如,将处理程序添加到列表视图的selectionchanged中,如下所示:

代码语言:javascript
复制
  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();
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2063736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档