Хотел отобразить все картинки в DataGrid которые хранятся в DataTabe как URI пути , в DataGrid использовал свой шаблон ячейки (DataGridTemplateColumn) . Думал что привязка будет к каждой колонке но удалось связать только по имени колонки.
Проблема в том что я не могу создать в DataTable колонки с одинаковыми именами.
<DataGrid Name="ChannelDataGrid" Margin="5" Grid.Column="1" ItemsSource="{Binding Data}" AutoGeneratingColumn="ChannelDataGrid_OnAutoGeneratingColumn" SelectionMode="Single" SelectionUnit="Cell" AlternationCount="9999" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" CanUserSortColumns="False">
<DataGrid.Resources>
<DataTemplate x:Key="ImgCell">
<Image Source="{Binding Path=Img}"/>
</DataTemplate>
</DataGrid.Resources>
<DataGrid.RowHeaderTemplate>
<ItemContainerTemplate>
<!-- AlternationIndex - это хак, использование не по назначению,
но здесь это самый простой способ пронумеровать строки без кучи кода -->
<TextBlock Text="{Binding AlternationIndex,RelativeSource={RelativeSource AncestorType=DataGridRow}}"/>
</ItemContainerTemplate>
</DataGrid.RowHeaderTemplate>
</DataGrid>
Как сделать binding к всем колонкам ?
Обновление 1:
Картинки есть но вся строка рисует картинки которые в первой ячейке, тоесть, можно менять картинки во всей строке а не ячейке.
Data = new DataTable("BestTable");
_data.Columns.Add("Img1");
И в XAML указал на неё.
<DataGrid Name="ChannelDataGrid" Margin="5" Grid.Column="1" ItemsSource="{Binding Data}" AutoGeneratingColumn="ChannelDataGrid_OnAutoGeneratingColumn" SelectionMode="Single" SelectionUnit="Cell" AlternationCount="9999" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" CanUserSortColumns="False">
<DataGrid.Resources>
<DataTemplate x:Key="ImgCell">
<Image Source="{Binding Path=Img1}"/>
</DataTemplate>
</DataGrid.Resources>
<DataGrid.RowHeaderTemplate>
<ItemContainerTemplate>
<!-- AlternationIndex - это хак, использование не по назначению,
но здесь это самый простой способ пронумеровать строки без кучи кода -->
<TextBlock Text="{Binding AlternationIndex,RelativeSource={RelativeSource AncestorType=DataGridRow}}"/>
</ItemContainerTemplate>
</DataGrid.RowHeaderTemplate>
</DataGrid>
Все последующие динамически созданные колонки и строки автоматически связывают их, но я не уверен что так правильно делать.
Код взять с этого ответа. Приложения на github https://github.com/Devoleksiy/MyApp3
DataTemplateс ключомx:Key="ImgCell", то есть, добавляете его в справочник ресурсов, но нигде его не используете. Вам либо надоDataTypeпрописать, либо разметить колонки явно. – aepot May 06 '20 at 19:01