我有一个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
我的具体问题:
为简单问题道歉。我真的只是想要一些开始的例子,到目前为止我找不到满足我需求的任何东西。
答案 0 :(得分:4)
我需要在窗口中添加什么类型的控件来容纳它 数据?
DataGrid 控件就是你要找的。 p>
如何发送数据(检测到缺少的更新名称和属性) 到网格显示?
将DataGrid的ItemsSource
绑定到ObservableCollection<T>
,其中T将是包含属性Name
,Severity
和Detected
的数据的类。
如何设置控件以便在何时折叠(或不可见) 没有检测到丢失的更新?
添加DataTrigger
以检查ItemsSource
集合是否不包含数据,折叠可见性。
我是否需要向网格添加滚动条或显示一个滚动条 自动?
DataGrid在内部使用ScrollViewer
。无需明确添加。
答案 1 :(得分:0)
作为替代DataGrid
可以提供ListView
控件,它将比DataGrid
更“简单”,他还支持对列进行排序的功能。对于他来说,还需要绑定一个ItemsSource
集合来显示:
ListView
控件提供基础结构,以显示不同布局或视图中的一组数据项。例如,用户可能希望在表中显示数据项,也可以对其列进行排序。
MSDN
中的示例。
很少在@RohitVats
的精彩答案中添加一些注释,所有关于DataGrid
的说法也适用于ListView
:
如果没有检测到丢失的更新,如何设置控件以使其折叠(或不可见)?
在这种情况下,我建议你遵守MVVM
的原则。使用Binding
和Commands
创建一个独立的应用程序。您想在Model / ViewModel中创建属性(例如IsEnabled
)并使用绑定在View
中设置它们,以避免直接应用于Control。 WinForms
样式应用程序或“常规”应用程序在逻辑和UI之间创建了一个强大的连接,这随后阻碍了进一步的更改和应用程序维护。