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 绑定在项目更改后停止工作 的相关文章

  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • WPF 从主线程以外的其他线程截屏

    我有一个线程用于侦听 WPF 应用程序的命令 如果 WPF 应用程序收到截取屏幕截图的命令 则任务将移交给 screenshotService 我在互联网上的某个地方找到了一些代码来截取屏幕截图 似乎可以工作 但我还没有想清楚 我无法从另一
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • 在 ASP.Net Core 2.0 中导出到 Excel

    我曾经使用下面的代码在 ASP NET MVC 中将数据导出到 Excel Response AppendHeader content disposition attachment filename ExportedHtml xls Res
  • 使用安全函数在 C 中将字符串添加到字符串

    我想将文件名复制到字符串并附加 cpt 但我无法使用安全函数 strcat s 来做到这一点 错误 字符串不是空终止的 我确实设置了 0 如何使用安全函数修复此问题 size strlen locatie size nieuw char m
  • 使用 LINQ 查找列表中特定类型的第一个元素

    使用 LINQ 和 C 在元素列表中查找特定类型的第一个项目的最短表示法是什么 var first yourCollection OfType
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反

随机推荐

  • 在 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