Динамическая привязка столбцов в Xaml - PullRequest
2 голосов
/ 18 ноября 2009

Это вопрос из предыдущего поста ( здесь ).

У меня есть некоторая информация 'заголовка', хранящаяся как: Dictionary<string,string> - где первая строка представляет имя поля, а вторая - отображаемый заголовок.

У меня есть набор динамических данных, которые хранятся как: Dictionary<string, object> - где строка - это имя поля.

Я связываюсь с этим в 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 В идеале я также хотел бы указать, должна ли кнопка существовать в первом столбце или нет (то есть кнопка редактирования / просмотра) посредством привязки данных

1 Ответ

2 голосов
/ 18 ноября 2009

Я использовал подход, который следует шаблону этого псевдокода

columns = New DynamicTypeColumnList()
columns.Add(New DynamicTypeColumn("Name", GetType(String)))
dynamicType = DynamicTypeHelper.GetDynamicType(columns)

DynamicTypeHelper.GetDynamicType () генерирует тип с простыми свойствами.См. этот пост для получения подробной информации о том, как сгенерировать такой тип

Затем, чтобы фактически использовать тип, сделайте что-то вроде этого

Dim rows as List(Of DynamicItem)
Dim row As DynamicItem = CType(Activator.CreateInstance(dynamicType), DynamicItem)
row("Name") = "Foo"
rows.Add(row)
dataGrid.DataContext = rows
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...