这是来自早期帖子(here)的后续问题。
我将一些'标题'信息存储为:
Dictionary<string,string>
- 第一个字符串表示字段名称,第二个字符串表示我想要显示的标题。
我有一组动态数据存储为:
Dictionary<string, object>
- 其中string是字段名称。
我在xaml中绑定到:
<data:DataGrid Name="_dataGrid" AutoGenerateColumns="True" IsReadOnly="False" Margin="5" Height="200">
<data:DataGrid.Columns>
<data:DataGridTextColumn Header="Forename" CanUserSort="True" SortMemberPath="Forename"
Binding="{Binding Converter={StaticResource RowIndexConverter},
ConverterParameter=Forename}"/>
<data:DataGridTextColumn Header="Surname" CanUserSort="True" SortMemberPath="Surname"
Binding="{Binding Converter={StaticResource RowIndexConverter},
ConverterParameter=Surname}"/>
<data:DataGridTextColumn Header="Age" CanUserSort="True" SortMemberPath="Age"
Binding="{Binding Converter={StaticResource RowIndexConverter},
ConverterParameter=Age}"/>
<data:DataGridTextColumn Header="Shoesize" CanUserSort="True" SortMemberPath="Shoesize"
Binding="{Binding Converter={StaticResource RowIndexConverter},
ConverterParameter=Shoesize}"/>
</data:DataGrid.Columns>
</data:DataGrid>
问题1 我想自动生成这些列(使用提供的标题信息)
问题2 我希望根据它们的数据类型生成列(即boolean = checkbox)
问题3 理想情况下,我还希望通过数据绑定指定第一列中是否存在按钮天气(即编辑/查看按钮)
答案 0 :(得分:2)
我使用的方法遵循此伪代码的模式
columns = New DynamicTypeColumnList()
columns.Add(New DynamicTypeColumn("Name", GetType(String)))
dynamicType = DynamicTypeHelper.GetDynamicType(columns)
DynamicTypeHelper.GetDynamicType()生成一个具有简单属性的类型。有关如何生成此类型
的详细信息,请参阅this post然后要实际使用该类型,请执行以下操作
Dim rows as List(Of DynamicItem)
Dim row As DynamicItem = CType(Activator.CreateInstance(dynamicType), DynamicItem)
row("Name") = "Foo"
rows.Add(row)
dataGrid.DataContext = rows