gpt4 book ai didi

c# - WPF:DataGrid 查找和替换

转载 作者:太空宇宙 更新时间:2023-11-03 11:46:09 25 4
gpt4 key购买 nike

我正在使用 DataGrid 来显示对象集合的特定属性的值。我通过与 Tomer Shamam's blog 上类似的方法实现了搜索和单元格突出显示。 .

但是,我现在需要实现“查找/替换”类型的功能。我假设我能够遍历 DataGrid 的单元格以执行突出显示和替换,但似乎没有一种简单的方法可以做到这一点。

有什么想法吗?

最佳答案

我认为您在这种情况下可能有错误的心态,也许您是从 WinForms 来到 WPF 世界...

在 WPF DataGrid 中,您基本上从不通过 DataGrid 操作数据,您总是直接在 DataSource 上工作。至于“似乎没有一种简单的方法可以做到这一点”——你是对的。这将比它应该的更困难。

如果我要实现查找/替换功能 - 每次点击都会首先突出显示下一个事件,然后我可以选择跳过/查找下一个或替换 - 那么我会这样做:

1) 我们需要知道我们当前的位置 - DataGrid.CurrentItem给出当前(数据源)对象;
2) 现在我们对数据源执行搜索以查找从当前对象位置开始的下一个事件(例如 var indx = List<object>.FindIndex(...) 后跟 var nextItem = List<object>[indx] );
3) 然后我们需要将 DataGrid 滚动到找到的对象并将 DataGridRow 放入 View 中 - DataGrid.ScrollIntoView(nextItem); (您可能需要在调用之前执行 DataGrid.UpdateLayout(),根据我的经验,.NET 4 内置的 DataGrid 似乎有些怪癖);
4) 你应该已经知道如何高亮一个单元格了……;
5) 等待用户输入,跳过或替换;
6) 如果我们替换,那么我们可以使用 DataGrid.CurrentItemnextItem 变量并用新值替换一些值。根据您设置 DataGrid 的方式,您可能需要执行一些 Refresh()/UpdateLayout() 调用或 BindingOperations.GetBindingExpression(...).UpdateTarget() 调用来更新 DataGrid;
7) 最后回到步骤1重复;

关于c# - WPF:DataGrid 查找和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3401377/

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