Как повторно использовать WPF DataGridTemplateColumn (включая привязку)
В таблицах данных WPF у меня есть столбец, определенный как DataGridTemplateColumn, который мне нужно будет использовать для всех типов столбцов. В качестве очень упрощенного примера, пожалуйста, рассмотрите ниже как фиктивный образец:
<DataGrid ItemsSource="{Binding Path=ItemList, Mode=OneWay}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTemplateColumn Header="Name" MinWidth="130" Width="Auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DockPanel LastChildFill="True">
<Image Source="component/Images/test.png"/>
<TextBlock Text="{Binding Path=Name, Mode=TwoWay, ValidatesOnDataErrors=True}"/>
</DockPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<DockPanel LastChildFill="True">
<Image Source="component/Images/test.png"/>
<TextBox Text="{Binding Path=Name, Mode=TwoWay, ValidatesOnDataErrors=True}"/>
</DockPanel>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Company" Binding="{Binding Company, ValidatesOnDataErrors=True}" MinWidth="115" Width="Auto"/>
</DataGrid.Columns>
</DataGrid>
Для простого примера, как я могу применить тот же шаблон, который использовался для столбца с заголовком = имя к столбцу с заголовком = компания, без необходимости воспроизводить весь шаблон для каждого столбца?
Я нашел ответ сэтот предыдущий так вопросгде они объясняют, используя такие ресурсы, как:
<Application.Resources>
<DataTemplate x:Key="CellTemplate">
...
</DataTemplate>
<DataTemplate x:Key="CellEdintingTemplate">
...
</DataTemplate>
</Application.Resources>
<DataGrid Style="{StaticResource MainGridStyle}">
<DataGrid.Columns>
<DataGridTemplateColumn CellTemplate="{StaticResource MyFirstColumnCellTemplate}" CellEdintingTemplate="{StaticResource MyFirstColumnCellEdintingTemplate}"/>
...
</DataGrid.Columns>
<DataGrid>
Это дает мне 95%, но последний кусок, который мне не хватает, - это как справиться с привязкой данных? Как мне создать какой-то тип заполнителя в шаблоне, а затем сделать фактическую привязку в сетке?
EDIT Я продолжал искать и нашел вопросCreate Common DataGridTemplateColumn что звучит так, как будто я хочу сделать, на самом деле сейчас невозможно. Так что, если кто-то еще пытается это сделать и видит этот вопрос, я не могу гарантировать, что это невозможно, но по этой ссылке кажется, что это возможно. Так что просто нужно будет продублировать весь код tempalte для каждого столбца.