gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 10:41:00 28 4
gpt4 key购买 nike

我希望有一个人可以帮助我...

Josh Smith在“使用Model-View View-Model的WPF应用程序”上写了一篇很棒的文章,他的文章中包括以下code sample

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

我不确定为什么会发生这种情况,但是我希望这样做,以便在您单击时将其向上移动一项,而不是从列表的顶部开始。我怀疑这与FocusManager有关,但不确定。

有谁知道控件为什么以这种方式运行?有可能吗?我应该采取什么方法来修改此代码,并使其不“重置”所选项目?

我已经基于此模板实现了一个项目,并且出于功能原因,我需要使键盘上下移动选择器而不重置它。

最佳答案

在示例中,您提供的设置IsSelected属性不会影响逻辑焦点,因此默认情况下会设置焦点。我目前想到的解决方法是强制代码隐藏元素中的焦点。例如,将处理程序添加到listview的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();
}

关于wpf - 如何在WPF中修复用户控件(使用MVVM实现)上的集合控件中的选定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2063736/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com