Определите свой класс как
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public class PartitionBasicData
{
public uint longitude { get; set; }
public uint latitude { get; set; }
public uint StationCode { get; set; }
}
и установите для свойства AutoGenerateColumns
DataGrid значение True (если вы не хотите определять столбцы вручную)
С этими изменениями, я смог заставить работать следующий код:
m_gridPartition1.ItemsSource = new PartitionBasicData[] { new PartitionBasicData() { latitude = 1, longitude = 2, StationCode = 3 }};
Изменить для вопроса, заданного в комментарии:
Inв этом случае вам потребуется удалить атрибут AutoGenerateColumns
и определить столбцы вручную (так как вы будете указывать пользовательский столбец для свойства StationCode
)
Для столбца StationCode вам потребуется указатьКонвертер для форматирования вашего массива, или, альтернативно, если byte [] всегда имеет известную длину и формат, вы можете просто указать свойство StringFormat
Binding.
Оба метода потребуют от вас либо установитьСвойство CanUserSort
для этого столбца имеет значение False или установите для свойства SortMemberPath
значение, которое не требует преобразования, чтобы исключение во время выполнения не создавалось, когда пользователь щелкает заголовок столбца.Или, поскольку в этой DataGrid есть только одна строка, указанная в исходном вопросе, можно установить для свойства CanUserSortColumns
в DataGrid значение False.
Метод преобразования:
<DataGrid Name="m_gridPartition1">
<DataGrid.Columns>
<DataGridTextColumn Header="Longitude" Binding="{Binding Path=longitude}" />
<DataGridTextColumn Header="Latitude" Binding="{Binding Path=latitude}" />
<DataGridTextColumn Header="Station Code" Binding="{Binding Path=StationCode, Converter={StaticResource someConverterToStyliseByteArray}}" CanUserSort="False" />
</DataGrid.Columns>
</DataGrid>
Метод StringFormat:
<DataGridTextColumn Header="Station Code" Binding="{Binding Path=StationCode, StringFormat='{}{0}-{1}-{2}'}" CanUserSort="False" />