【问题标题】:WPF Can anyone explain DataGrid.items.add(object)WPF 谁能解释一下 DataGrid.items.add(object)
【发布时间】:2014-01-16 16:56:28
【问题描述】:

我是 WPF 新手,对这一点感到困惑。

DataGrid.items.add("text") 在数据网格中添加一个空行。 大家建议将源绑定到INumerable集合。

但是DataGrid.items.add(object)的目的是什么

在 winform 中它只是 add(key, val)。 WPF 是关于绑定的吗?没有datasource 就没有任何简单的方法可以将数据添加到网格吗? WPF DataGrid 中的key, val 去了哪里

【问题讨论】:

标签: c# wpf datagrid


【解决方案1】:

WPF 方法比可怕的 winforms 方法更好、更简单。

在winforms中,当你将东西“放入”用户界面时,

DataGrid.Rows.Add(myobject);

它变成了object,因此你需要求助于一堆可怕的铸造技术:

var myobject = DataGrid.Row[x] as MyClass;

这太可怕了,并且会导致最终用户面临各种运行时错误。

更不用说您实际上需要执行两次相同的操作,一次将内容“放入”UI 中,然后再次从 UI 中“获取”内容。

使用 WPF,一切都很漂亮,数据绑定和强类型,因为您不会在 UI 中“放置东西”,而是将东西放入强类型的 .Net 对象中,例如 ObservableCollection<MyClass>

MyCollection.Add(myobject);

然后:

MyCollection[x] //this is already an instance of MyClass and does not need any casting.

而且您不会重复做同样的事情,因为 DataBinding 负责同步 UI 和 Data 对象。

【讨论】:

    【解决方案2】:

    您可以将任何项目添加到 WPF DataGrid,如类、图像、文本等。与 winforms 绑定不同,每个项目可以是不同的类型/类,这就是为什么需要 object. 一旦绑定了类型和属性必须在 XAML 定义中说明绑定对象的属性,以便 datagrid 可以显示绑定对象的某些属性。

    【讨论】:

    • 我现在明白了
    猜你喜欢
    • 1970-01-01
    • 2017-04-07
    • 2015-12-21
    • 2015-11-23
    • 2013-05-23
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    相关资源
    最近更新 更多