【问题标题】:WPF: Bind DataGrid to List<String>WPF:将 DataGrid 绑定到 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。

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

【问题讨论】:

    标签: wpf binding datagrid


    【解决方案1】:

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

    Binding="{Binding Path=.}
    

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

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

    public class StringWrapper
    {
        public string Value { get; set; }
    }
    

    【讨论】:

    • 但是为什么包装器工作?我们仍然绑定到一个字符串,对吧?
    • No.. 您正在绑定到一个包含字符串的对象。这就是区别
    • 我现在明白了。绑定不能更改绑定的引用。它只能更改属性。现在说得通了。非常感谢。
    猜你喜欢
    • 2017-05-13
    • 1970-01-01
    • 2013-12-07
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    相关资源
    最近更新 更多