Wpf 按位置在Datagrid上绑定Xaml的数组
我有一个字符串数组列表作为输入。对于所有列表,数组维度都是静态的,但在检索列表之前,我无法知道数组大小。 我需要将列表绑定到Silverlight中的datagrid中 我试图在运行时创建列,将每个列绑定到特定的数组位置,但找不到方法 你知道怎么做吗 我最终可以将我的数组列表“转换”到任何可以绑定到datagrid中的东西中 想法是在Silverlight中的datagrid中显示一种2d矩阵(我认为问题类似) 列表Wpf 按位置在Datagrid上绑定Xaml的数组,wpf,silverlight,xaml,datagrid,binding,Wpf,Silverlight,Xaml,Datagrid,Binding,我有一个字符串数组列表作为输入。对于所有列表,数组维度都是静态的,但在检索列表之前,我无法知道数组大小。 我需要将列表绑定到Silverlight中的datagrid中 我试图在运行时创建列,将每个列绑定到特定的数组位置,但找不到方法 你知道怎么做吗 我最终可以将我的数组列表“转换”到任何可以绑定到datagrid中的东西中 想法是在Silverlight中的datagrid中显示一种2d矩阵(我认为问题类似) 列表 column_1 column_2 column_3
column_1 column_2 column_3 .. column_m
string[1,1] string[1,2] string[1,3] .. string[1,m]
string[2,1] string[2,2] string[2,3] .. string[2,m]
string[3,1] string[3,2] string[3,3] .. string[3,m]
....
string[n,1] string[n,2] string[n,3] .. string[n,m]
n是列表长度,m是列表列的最大编号
任何想法都值得赞赏不幸的是,这并不容易 您是否有任何有效的约束,例如允许的最大列数或类似的限制? 如果您这样做(假设您有N列最大值),您可能可以通过
第二个选项要简单得多,但您将不具备DataGrid的功能,如排序、移动列、行选择、每行编辑事件等。我在Denis的答案中找到了两种使用模式的解决方案:
- 第一种方法是使用反射在运行时为绑定生成一个类,如中所建议的(多亏了Vladimir Bodurov)。我已经测试了这个解决方案,我将尝试在我的项目中使用它。目前唯一的问题是,对于大型集合,性能很差。但我希望有人能在下一个版本中修复它(Silverlight3似乎还没有修复这个问题)
- 第二种解决方案是使用一些动态语言来生成数据。我不知道这是否会更快(可能不会),但最终会有所帮助。我将在将来尝试使用ironpython或ruby生成绑定到datagrid中的类
乔治谢谢你的回答。我会试着用第一个。。不幸的是,我需要datagrid的内置行为。我还找到了关于我的问题的另一个答案:。再次感谢弗拉基米尔的文章太棒了。。。正是[Silverlight中的SQL]所需要的,我必须更新这里发布的Vladimir的通用字典代码