WPF在网格中显示数据

本文关键字:显示 数据 网格 WPF | 更新日期: 2023-09-27 17:49:23

我有一个C#CLI程序,它可以扫描丢失的Windows更新,并将它们写入命令行,或者根据传入的标志将它们序列化为XML。我正在尝试为此构建一个WPF组件,但有几点不确定。特别是,我想把所有缺失的更新都写在WPF主窗口中心的网格中。外观是这样的(字段之间有网格线(:

NAME                                         SEVERITY      DETECTED
Security Update for Windows 7 (KB1234567)    Important     3/9/2014
Security Update for Windows 7 (KB7654321)    Critical      3/9/2014

我的具体问题:

  1. 我需要向窗口添加什么类型的控件来容纳这些数据
  2. 如何将数据(检测到缺少更新名称和属性(发送到网格以进行显示
  3. 如何设置控件,使其在未检测到丢失更新时折叠(或不可见(
  4. 我需要在网格中添加滚动条还是自动显示滚动条

为简单的问题道歉。我真的只是在寻找一些例子来开始,到目前为止,我还没有找到任何能满足我需求的东西。

WPF在网格中显示数据

我需要在窗户上添加什么类型的控件来容纳这个数据

DataGrid控件就是您想要的。


如何发送数据(检测到缺少更新名称和属性(到网格显示?

将DataGrid的ItemsSource绑定到ObservableCollection<T>,其中T将是包含属性为NameSeverityDetected的数据的类。


当没有检测到丢失的更新?

添加DataTrigger以检查ItemsSource集合是否不包含数据,折叠可见性。


我需要在网格中添加滚动条还是显示滚动条自动地

DataGrid内部使用ScrollViewer。无需显式添加。


请参阅此处和此处的dataGrid示例。

作为DataGrid可以提供ListView控制的替代方案,它将比DataGrid"简单"一点,他还支持对列进行排序。对于他来说,还需要绑定一个ItemsSource集合来显示:

ListView控件提供了以不同布局或视图显示一组数据项的基础结构。例如,用户可能希望在表中显示数据项并对其列进行排序。

MSDN中的示例。

@RohitVats的精彩回答再加一些注释,关于DataGrid的所有内容也适用于ListView:

如何设置控件,使其在未检测到丢失更新时折叠(或不可见(?

在这种情况下,我建议你坚持MVVM的原则。使用BindingCommands创建一个独立的应用程序。您希望在Model/ViewModel中创建属性(例如IsEnabled(,并使用绑定在View中设置它们,以避免直接应用于控件。WinForms风格的应用程序或"常规"应用程序在逻辑和UI之间建立了强大的连接,从而阻碍了进一步的更改和应用程序维护。