WPF:将 DataGrid 绑定到 List<String>

Posted

技术标签:

【中文标题】WPF:将 DataGrid 绑定到 List<String>【英文标题】:WPF: Bind DataGrid to List<String> 【发布时间】:2011-02-21 19:24:39 【问题描述】:

有趣的是,有时简单的事情会在背后咬我。

我可以使用这样的 DataGridTextColumn 将 DataGrid 很好地绑定到某个任意类的 Collection:

// bound to List<Class>
<DataGridTextColumn Header="Name" Binding="Binding Name"/>

现在我想将一个 DataGrid 绑定到一个简单的字符串集合。因此,由于没有要绑定的属性“名称”或类似的东西,我该如何编写绑定:

// bound to List<String>
<DataGridTextColumn Header="Name" Binding="Binding ???"/>

字符串没有属性“值”或类似的东西。如果我只写 Binding ,我最终会得到一个单向绑定,无法将更改写回 Collection。

想一想,我认为绑定到集合是不可能的,所以我确实需要将我的字符串包装到一个类中? 或者有什么办法?

【问题讨论】:

【参考方案1】:

您可以使用以下 Binding 使其运行:

Binding="Binding Path=.

但这不会解决您的问题,因为字符串是不可变的引用类型,这意味着您无法更改绑定到用户界面的字符串引用。

所以您的想法是正确的,您需要将这些字符串包装在对象中,使用 Binding 的 path 属性并将这些对象提供给您的 DataGrid。

public class StringWrapper

    public string Value  get; set; 

【讨论】:

但是为什么包装器工作?我们仍然绑定到一个字符串,对吧? No.. 您正在绑定到一个包含字符串的对象。这就是区别 我现在明白了。绑定不能更改绑定的引用。它只能更改属性。现在说得通了。非常感谢。

以上是关于WPF:将 DataGrid 绑定到 List<String>的主要内容,如果未能解决你的问题,请参考以下文章

WPF DataGrid 绑定到List集合

如何将 DataGrid 中的文本框绑定到 Wpf 中的列表?

找不到将Wpf DataGrid列绑定到属性的方法[关闭]

WPF DataGrid 多选绑定

将按钮绑定到 DataGrid WPF 中的对象

将datagrid WPF绑定到带有列表的两个不同类?