WPF:将DataGrid绑定到List <String>

Sam*_*Sam 24 wpf binding datagrid

有趣的是,有时简单的事情会在后面咬我.

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

// bound to List<Class>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
Run Code Online (Sandbox Code Playgroud)

现在我想将DataGrid绑定到一个简单的String集合.因为没有属性"Name"或类似的东西要绑定,我该如何编写绑定:

// bound to List<String>
<DataGridTextColumn Header="Name" Binding="{Binding ???}"/>
Run Code Online (Sandbox Code Playgroud)

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

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

Arc*_*rus 33

您可以使用以下绑定运行它:

Binding="{Binding Path=.}
Run Code Online (Sandbox Code Playgroud)

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

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

public class StringWrapper
{
    public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

  • 我现在知道了.绑定不能更改绑定引用.它只能改变属性.现在有道理.非常感谢. (4认同)