Мне нужно создать DataGrid, который привязан к объекту, похожему на следующее:
public class MyClass
{
public string Header { get; set; }
public string[] Values { get; set; }
}
Как видите, заголовки, необходимые для таблицы, не являются именами свойствобъект, поэтому я не могу просто использовать AutoGenerateColumns из рук вон.Моя идея до сих пор состоит в том, чтобы использовать конвертер, чтобы взять объекты MyClass и преобразовать их в DataTable.
public object Convert(
object value,
Type targetType,
object parameter,
System.Globalization.CultureInfo culture)
{
var items = value as IEnumerable<MyClass>;
if (items != null)
{
DataTable dTable = new DataTable();
foreach (MyClass item in items)
dTable.Columns.Add(new DataColumn(item.Header, typeof(string)));
return dTable;
}
else
return null;
}
Я устанавливаю DataContext содержащей сетки в качестве объекта List<MyClass>
, и метод Convert () вызывается, и DataTable создается нормально по внешнему виду, но когда я запускаюприложение, DataGrid просто пусто.Вот базовое представление моего XAML:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:DataTableConverter x:Key="converter"/>
</Window.Resources>
<Grid x:Name="grid">
<DataGrid AutoGenerateColumns="True"
ItemsSource="{Binding Path=., Converter={StaticResource converter}}"/>
</Grid>
</Window>
Есть идеи, почему DataGrid остается пустым?