gpt4 book ai didi

wpf - MVVM WPF datagrid数据录入问题

转载 作者:行者123 更新时间:2023-12-04 21:24:34 25 4
gpt4 key购买 nike

我的 MVVM 应用程序中有一个数据网格,由于客户端希望显示数据的方式,需要使用模板列。不过,他们想要一些典型的数据输入功能(按 enter 键执行数据检查,如果有效则提交该行,关注下一行的第一个文本框;按 tab 键关注下一个文本框...)。此外,数据通常是从外部源导入到网格中的,通常一次导入数千条记录。

现在,我有一个 Loaded 事件连接到每个文本框,我用它来在添加新行后设置焦点。我的问题是当我导入很多行时网格变得困惑。当用户滚动时,Loaded 事件被激发,网格变得基本上不可用。我禁用了虚拟化以防止这种情况发生,并发现我的网格在某些配置中占用了 RAM,这是 Not Acceptable 。在不使用大量内存的情况下,我想不出一种方法让这个网格按照他们需要的方式工作。似乎我只需要能够将文本框集中在新添加的行中,但是由于数据验证是在 View 模型中执行的,所以我无法访问代码隐藏中的新行,所以我不能只是调用“newtextbox.focus()”或其他名称。我在这里变得非常绝望,任何建议将不胜感激。

最佳答案

在后面的代码中放置一个事件监听器,它可以调用您的 newtextbox.focus() (以及您想要执行的任何其他操作)。在 View 模型的验证中,使用指示您希望网格执行的操作的参数触发事件。

编辑:好的,新方法。 try catch 击键,然后在 enter 或 tab 上执行您希望它执行的操作。

这将在您的 xaml 中

<Grid  KeyUp="myDataGrid_KeyUp" >

这将进入您的代码隐藏

    private void myDataGrid_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
// do your enter stuff here, manipulate the view model for validation, etc.
}
else if (e.Key == Key.Tab)
{
// do your tab stuff here (get selected row, determine cell focus, focus on next cell)
}
}

关于wpf - MVVM WPF datagrid数据录入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6904058/

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