В одном из приложений, в котором я работаю, я нашел этот код -
public class MatrixCellTemplate : ColumnDataTemplate<MatrixCellContainer>
{
}
public class ColumnDataTemplate<T> : DataTemplate where T : FrameworkElement
{
public ColumnDataTemplate()
{
FrameworkElementFactory factory = new FrameworkElementFactory(typeof(T));
VisualTree = factory;
}
}
Этот MatrixCellTemplate
используется для установки CellTemplate
пользовательского DataGridTemplateColumn
(позже добавленного в коллекцию DataGrid.Columns
) следующим образом -
<DataGridTemplateColumn.CellTemplate>
<Matrix:MatrixCellTemplate />
</DataGridTemplateColumn.CellTemplate>
Я не уверен, в чем выгода использования этого FrameworkElementFactory
и с какой проблемой я могу столкнуться, если я напрямую использую MatrixCellContainer
в качестве шаблона ячейки -
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Matrix:MatrixCellContainer>
</Matrix:MatrixCellContainer>
</DataTemplate>
<!--<Matrix:MatrixCellTemplate />-->
</DataGridTemplateColumn.CellTemplate>