有趣的是,有时简单的事情会在背后咬我。
我可以使用像这样的DataGridTextColumn将DataGrid很好地绑定到某个任意类的Collection:
// bound to List<Class>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
现在我想将DataGrid绑定到一个简单的String集合。因为没有属性“Name”或类似的东西要绑定,我该如何编写绑定:
// bound to List<String>
<DataGridTextColumn Header="Name" Binding="{Binding ???}"/>
字符串没有属性“值”或类似的东西。如果我只是写{Binding},我将最终得到一个单向绑定,无法将更改写回Collection。
考虑一下,我认为不可能绑定到一个集合,所以我需要将我的字符串包装成一个类? 或者有办法吗?
答案 0 :(得分:33)
您可以使用以下绑定运行它:
Binding="{Binding Path=.}
但它不会解决您的问题,因为字符串是不可变的引用类型,这意味着您无法更改绑定到用户界面的字符串引用。
所以你的想法是正确的,你需要将这些字符串包装在对象中,使用Binding的path属性并将这些对象提供给你的DataGrid。
public class StringWrapper
{
public string Value { get; set; }
}