【问题标题】:WPF Show Data in GridWPF 在网格中显示数据
【发布时间】:2014-03-09 20:08:13
【问题描述】:

我有一个 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. 我需要在网格中添加滚动条还是自动显示?

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

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

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

    DataGrid 控制就是您想要的。


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

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


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

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


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

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


    请参阅 dataGrid 示例 herehere

    【讨论】:

      【解决方案2】:

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

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

      MSDN 中的示例。

      @RohitVats的精彩回答稍加注释,所有关于DataGrid的说法也适用于ListView

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

      在这种情况下,我建议你坚持MVVM的原则。使用BindingCommands 创建一个独立的应用程序。您想在模型/视图模型中创建属性(例如IsEnabled)并使用绑定在View 中设置它们,以避免直接应用于控件。 WinForms 风格的应用程序或“常规”应用程序在逻辑和 UI 之间建立了牢固的联系,从而阻碍了进一步的更改和应用程序维护。

      【讨论】:

      • DataGrid 中也可以使用列排序。
      • @RohitVats:我知道,我没有说DataGrid 不支持它们。
      • 我通常更喜欢 DataGrid。 DataGrid vs ListView.
      • @RohitVats:我通常也是。我刚刚介绍了 OP 的替代方案,他突然选择了ListView。除了DataGrid,还有一个控件可以来找他。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-08
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多