c# - WPF DataGrid 绑定(bind)和复选框

标签 c# wpf

我有一个基本问题:

假设我有一些类的元素列表。我还有一个 DataGrid,它显示此列表项的属性。我希望用户通过额外的复选框列(实际上是 datagridtemplatecolumn)选择一些项目。然后他按下按钮,只有选定的项目才会被某些功能处理。 我应该如何实现这个复选框的逻辑?

  1. 我应该向我的类添加一个 bool 属性并将其绑定(bind)到复选框列吗? (我认为,仅仅为了 UI 而在我的核心类中添加一个额外的属性并不好)

  2. 我是否应该制作一些具有 bool 属性的包装类并将 DataGrid 绑定(bind)到包装类列表? (比第一个变体更符合 OOP 规则)

  3. 制作一个未绑定(bind)的复选框列。然后检查循环中的数据网格行以在处理之前收集选定的项目。 (这就是我想做的,但是未绑定(bind)的复选框列的行为真的很奇怪:当我切换一个复选框时,其他几个也被切换。而且我也没有找到一种方法来查看 DataGrid 的所有行).

  4. 您的变体...

我想根据 OOP 规则来做这些事情。这是主要要求。这就是为什么我不能接受第一个变体,除非你告诉我它没问题而且很常用。

最佳答案

我投票给#2;它与 MVVM 结合我认为这是在 WPF 中进行直接开发的唯一方法。通过这种方式,您将制作一个 View 模型类来包装您的域对象以处理复选框和更改属性等之间的通信,同时触发 PropertyChanged 事件并保持您的 UI 最新。

关于c# - WPF DataGrid 绑定(bind)和复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3420060/

相关文章:

c# - 通过代码选择多个列表框项

c# - BackgroundWorker _ AppDomain.UnhandledException 未捕获异常

c# - 如何在WPF中获取移动形状的新位置

c# - 选择 'performance' 选项卡调用 Windows 任务管理器

c# - BackgroundService .net 核心中 ExecuteAsync 和 StartAsync 方法之间的区别

c# - 我可以直接在 LINQ 中填充我自己的类的列表吗?

c# - {"The specified cast from a materialized ' System.Guid' 类型到 'System.Int32' 类型无效。"

c# - View 的创建应该是 View 或 ViewModel [MVVM] 的一部分?

wpf - 我应该使用MVVM还是仅使用ContentControl加载屏幕?

c# - 来自 .NET Compact Framework 3.5 应用程序的随机 native 异常