WPF DataGrid SelectedItem 绑定在项目更改后停止工作

2023-11-25

我的问题/情况非常类似于Wpf DataGrid SelectedItem 在单元格编辑后失去绑定但我没有使用任何“自定义”WPF 框架。我有一个实现的模型INotifyPropertyChanged and IEditableObject,以及绑定到的网格ObservableCollection<T>。网格的SelectedItem属性绑定到 VM 上的属性。

通过断点,我可以看到我的ViewModel.SelectedItem当我在网格中选择不同的行时,属性会发生变化。然而,当我连续更改一个值时,ViewModel.SelectedItem当我将焦点转移到行上时,不再设置属性。上面链接中确定的解决方案不起作用,因为我没有使用自定义 WPF 框架,只是使用裸 WPF。

有任何想法吗?

// View model area
public IPurchaseorderItem SelectedItem
{
    get 
    { 
        return _selectedItem;
    }

    set
    {
        if (_selectedItem != value)
        {
            _selectedItem = value;
            SelectItemCommand.NotifyCanExecuteChanged();
            RemoveItemCommand.NotifyCanExecuteChanged();
        }
    }
}

// XAML SelectedItem binding
<views:NoBindingGroupDataGrid SelectedItem="{Binding SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"  

// Special Grid to clear binding groups (read on a similarly themed SO question/answer)
internal sealed class NoBindingGroupDataGrid : DataGrid
{
    private bool _editing = false;

    protected override System.Windows.Size MeasureOverride(System.Windows.Size availableSize)
    {
        var desiredSize = base.MeasureOverride(availableSize);
        ClearBindingGroup();
        return desiredSize;
    }

    protected override void OnCellEditEnding(DataGridCellEditEndingEventArgs e)
    {
        base.OnCellEditEnding(e);

        if (!_editing)
        {
            _editing = true;

            CommitEdit(DataGridEditingUnit.Row, true);

            _editing = false;
        }
    }

    private void ClearBindingGroup()
    {
        ItemBindingGroup = null;

        foreach (var item in Items)
        {
            var row = ItemContainerGenerator.ContainerFromItem(item) as FrameworkElement;

            if (row != null)
            {
                row.BindingGroup = null;
            }
        }
    }
}

显然,DataGrid 上的 SelectedItem 依赖属性已损坏并且未正确使用。使用 OnPropertyChanged 进行一些调试后,我发现网格实际上可靠地设置了“CurrentItem”属性。我改为使用 CurrentItem,一切似乎都正常工作...用户的“选定行”正在毫无意外地发送到虚拟机。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF DataGrid SelectedItem 绑定在项目更改后停止工作 的相关文章

随机推荐

  • 在 Linux 上使用 C++ 发送邮件

    有人能给我一个如何使用 C 程序发送邮件的例子吗 我遇到过一些程序 但它们的描述性并不强 如果我需要更多选择 我还想知道还有哪些其他库 您可能感兴趣libcURL 它是一个很棒的多平台 C 库 支持许多不同的协议 包括 SMTP 官方网页包
  • Django:UpdateView 限制每个用户

    我有一个网站 用户可以在其中创建和编辑自己的列表 我使用通用视图 CreateView 来允许用户创建列表 我想使用通用视图 UpdateView 来允许他们编辑列表 但是login required True在这种情况下还不够 因为只有列
  • 类上的 JavaScript 点击事件监听器

    我目前正在尝试编写一些 JavaScript 来获取已单击的类的属性 我知道要以正确的方式执行此操作 我应该使用事件侦听器 我的代码如下 var classname document getElementsByClassName class
  • 避免 Java CMS GC 中升级失败

    我有一个使用 CMS 垃圾收集的 Java 应用程序 每天都会遇到几次 ParNew 升级失败 完整 GC 请参阅下面的示例 据我所知 当垃圾收集在旧一代中找不到足够的 连续的 空间来将对象从新一代提升到其中时 就会发生提升失败 此时 它被
  • 自动滚动到页面底部

    我有一个问题清单 当我单击第一个问题时 它应该自动将我带到页面底部的特定元素 我怎样才能用 jQuery 做到这一点 jQuery 不是必需的 我从谷歌搜索中得到的大多数最重要的结果都给了我这个答案 window scrollTo 0 do
  • 如何仅针对某些产品跳过 woocommerce 上的购物车页面?

    我将其添加到我的functions php 文件中 add filter woocommerce add to cart redirect woo redirect to checkout function woo redirect to
  • Kotlin:泛型、反射以及类型 T 和 T:Any 之间的区别

    如果我尝试访问泛型类型 T 的 javaClass Kotlin 编译器会抱怨 T 不是 kotlin Any 的子类型 class Foo
  • Jenkins 在工作区之外构建

    我是 Jenkins Hudson 的新手 正在尝试从 buildbot 迁移基于 C make 的项目 由于遗留原因 构建系统被硬编码为在版本化源代码树 git 之外构建 即上面的一个目录 在一个单独的目录中 例如 workspace g
  • 如何获取双指针指向的二维数组的大小?

    我试图从指向数组的双指针获取二维数组的行数和列数 include
  • 从时间序列数据中获取间隔

    我有一个相当奇怪的问题 我目前正在处理时间序列数据 并且我的数据集中有几个峰值 该数据是使用中子密度测井机收集的 它描述了传感器在一段时间内连续记录的事件 数据中的峰值对应于该机器下入钻孔时的一些有趣的间隔 所以说 巅峰很重要 然而 重要的
  • 最新版本上的 FirebaseInstallationsException

    每次我将应用程序的 Firebase 依赖项更新为比 2020 年 2 月 27 日更新更新的版本时 我在运行应用程序时就会开始看到此异常 04 29 18 21 58 170 3314 3541 E Firebase Installati
  • 如何使用 Android Studio 将项目同步到 GitHub?

    我正在尝试将 Android Studio 文件夹中的项目同步到 GitHub 但除了在选项菜单中添加凭据之外 我不完全确定该怎么做 有人可以给我一个快速指南吗 在Android Studio中打开需要推送的项目 Click VCS gt
  • Opencv Python 使用 Numpy 数组裁剪图像

    我正在使用 OpenCV 3 1 0 dev 和 python 2 7 我正在尝试裁剪掉我缝合的图像的黑色外部 困难在于图像中还有其他黑色像素 因此 cv2 findcontours 返回一个非常有趣的 numpy 数组 第一张图片是我所拥
  • 从 .NET 应用程序中读取和解码存储在图像或 PDF 文件中的 PDF-417 条形码

    我正在寻找一个能够解码来自PDF 417条码嵌入图像文件或 PDF 中 此时 我只能找到一个Java版本 and a C版 理想情况下 这个库应该是开源且免费的 但我怀疑这样的解码器是否存在 我愿意尝试您可能已经使用过的现有产品的演示 这让
  • Python请求,如何为每个请求绑定不同的源ip? [复制]

    这个问题在这里已经有答案了 我正在尝试学习一些Python 但我在要测试的内容中遇到了逻辑问题 目前 我的代码编写方式是在进程启动时绑定到 source address 不会改变 import socket import requests
  • 如何通过 JavaScript 禁用 Chrome 的已保存密码提示设置

    有没有办法借助 JavaScript 或 jQuery 来操作 Chrome 设置 我想使用 JavaScript 禁用保存密码弹出气泡 这个怎么做 现在我将回答我自己的问题 它可以在 chrome 和 mozilla firefox 中完
  • 将 ForEachAsync 与 Action 内的 wait 一起使用时不等待

    以下应该返回 C 但它返回 B using System Data Entity var state A var qry from f in db myTable select f await qry ForEachAsync async
  • 如何告诉 Visual Studio 在出现特定异常时不要中断?

    我有一个特定类型的异常 我希望 Visual Studio 能够处理该异常不继续并显示异常助手屏幕 本质上 我希望它只是让我的正常异常处理基础设施来处理它 该异常是 System Exception 的继承者 我编写了它并拥有其源代码 任何
  • Phonegap - 如何使状态栏变黑?

    非常简单的一个问题 我似乎找不到答案 我如何将 iPhone 状态栏 顶部的细栏 带有接收 电池等 从默认灰色更改为黑色PhoneGapiPhone 应用程序 谢谢 格伦 PhoneGap iPhone 应用程序只是一个常规的 Xcode
  • WPF DataGrid SelectedItem 绑定在项目更改后停止工作

    我的问题 情况非常类似于Wpf DataGrid SelectedItem 在单元格编辑后失去绑定但我没有使用任何 自定义 WPF 框架 我有一个实现的模型INotifyPropertyChanged and IEditableObject