WPF在网格中显示数据

时间:2014-03-09 20:08:14

标签: c# wpf

我有一个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. 我是否需要向网格添加滚动条或自动显示?
  5. 为简单问题道歉。我真的只是想要一些开始的例子,到目前为止我找不到满足我需求的任何东西。

2 个答案:

答案 0 :(得分:4)

  

我需要在窗口中添加什么类型的控件来容纳它   数据?

DataGrid 控件就是你要找的。


  

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

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


  

如何设置控件以便在何时折叠(或不可见)   没有检测到丢失的更新?

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


  

我是否需要向网格添加滚动条或显示一个滚动条   自动?

DataGrid在内部使用ScrollViewer。无需明确添加。


请参阅dataGrid示例herehere

答案 1 :(得分:0)

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

  

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

MSDN中的示例。

很少在@RohitVats的精彩答案中添加一些注释,所有关于DataGrid的说法也适用于ListView

  

如果没有检测到丢失的更新,如何设置控件以使其折叠(或不可见)?

在这种情况下,我建议你遵守MVVM的原则。使用BindingCommands创建一个独立的应用程序。您想在Model / ViewModel中创建属性(例如IsEnabled)并使用绑定在View中设置它们,以避免直接应用于Control。 WinForms样式应用程序或“常规”应用程序在逻辑和UI之间创建了一个强大的连接,这随后阻碍了进一步的更改和应用程序维护。