У меня есть привязка dataTable к dataGrid:
CS:
SQLiteDataAdapter sQLiteDataAdapter = new SQLiteDataAdapter(_command);
DataTable dataTable = new DataTable("Inventory");
sQLiteDataAdapter.Fill(dataTable);
for (int i = 0; i < dataTable.Rows.Count; i++)
{
dgridTenderInventory.Items.Add(new
{
ID = dataTable.Rows[i]["id"],
Specs = dataTable.Rows[i]["specs"],
Image = dataTable.Rows[i]["image"]
});
}
XAML:
<DataGrid x:Name="dgridTenderInventory" RowHeaderWidth="0" MouseDown="DgridTenderInventory_MouseDown">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ID}"/>
<DataGridTemplateColumn Header="Image">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Height="50" Source="{Binding Image, Converter={StaticResource BinaryImageConverter}}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Specs">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Specs}" TextWrapping="Wrap"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Я могу получить значение ячейки для идентификатора (DataGridTextColumn), выбрав строку следующим образом:
object item = dgridTenderInventory.SelectedItem;
string ID = dgridTenderInventory.SelectedCells[0].Column.GetCellContent(item) as TextBlock).Text;
Но когда я хочу получить Specs (как текст) или Image (как изображение), он говорит: «... возвращен ноль». Вероятно, это результат DataGridTemplateColumn. Как я могу получить значение внутри DataGridTemplateColumn? (Особенно мне нужно получить изображение и установить изображение (называемое imgPopup) точно так же, как ячейка изображения dataGrid)
string specs= dgridTenderInventory.SelectedCells[2].Column.GetCellContent(item) as TextBlock).Text; // return null
imgPopup.Source = dgridTenderInventory.SelectedCells[1].Column.GetCellContent(item) as Image).Source ; // ?? how does it be implemented?