gpt4 book ai didi

wpf - Sourcecollection 计数为 0 newitemplaceholder 未显示

转载 作者:行者123 更新时间:2023-12-04 15:01:53 25 4
gpt4 key购买 nike

删除绑定(bind)集合中的所有项目后,datagrid.items.count为1,项目集合中唯一的项目是newitemplaceholder,但datagrid不显示newitemplaceholder。只有当最后一项是 newitemplaceholder 并且您尝试编辑它但没有按回车键而是单击触发删除事件的按钮时,才会发生这种情况。

由于 edit 事件,selecteditem 不再是 newitemplaceholder,因此该项目被认为是 sourcecollection 中的新项目。

在调用删除之前,数据网格中有一个 item.count 为 2。

对于如何让 newitemplaceholder 在这种奇怪的情况下出现有什么帮助吗?

最佳答案

我遇到过同样的问题,而且不仅在源集合计数为 0 时发生,而且在编辑状态中的任何最后一行都会发生 - 一旦从编辑状态中删除,网格底部的新记录行消失。我还没有发现比这更好的东西 - 非常粗鲁而且不是非常快速的解决方案,但至少它对我有用而且目前总比没有好。

给定名为 grItems 的 DataGrid,私有(private) View 模型引用 _vm 具有用于数据网格绑定(bind)的 Items 属性,示例代码可能如下所示:

 <DataGrid Name="grItems"
ItemsSource="{Binding Path=Items}"
UnloadingRow="DataGridUnloadingRow">

和代码隐藏:

    private void DataGridUnloadingRow(object sender, DataGridRowEventArgs e)
{
grItems.UnloadingRow -= DataGridUnloadingRow;
grItems.ItemsSource = null;
grItems.ItemsSource = _vm.Items;
grItems.UnloadingRow += DataGridUnloadingRow;
}

更新

后来我注意到当我们需要滚动网格时这不起作用 - 我收到一些内部 WPF 错误“偏移量和长度超出范围...”。早些时候,我每行都有一个删除按钮,该按钮绑定(bind)到在与项目列表相同级别上定义的命令。所以我不得不摆脱命令并在 View 中使用一些肮脏的技巧来隐藏代码——在从 View 模型集合中删除一个项目之前,我将焦点移到网格外的某个地方,并在删除后将焦点取回。据我了解,此技巧对新添加的行执行某种“提交”,并对未处于编辑状态的行执行删除操作。

关于wpf - Sourcecollection 计数为 0 newitemplaceholder 未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3631279/

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