En una de las aplicaciones que estoy trabajando me he encontrado este código -propósito de utilizar FrameworkElementFactory
public class MatrixCellTemplate : ColumnDataTemplate<MatrixCellContainer>
{
}
public class ColumnDataTemplate<T> : DataTemplate where T : FrameworkElement
{
public ColumnDataTemplate()
{
FrameworkElementFactory factory = new FrameworkElementFactory(typeof(T));
VisualTree = factory;
}
}
Este MatrixCellTemplate
se utiliza para establecer el CellTemplate
de una costumbre DataGridTemplateColumn
(añadido después de DataGrid.Columns
colección) como esto -
<DataGridTemplateColumn.CellTemplate>
<Matrix:MatrixCellTemplate />
</DataGridTemplateColumn.CellTemplate>
no estoy seguro de cuál es la ventaja de utilizar este FrameworkElementFactory
y qué problema puedo enfrentar si uso directamente como plantilla MatrixCellContainer
celular -
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Matrix:MatrixCellContainer>
</Matrix:MatrixCellContainer>
</DataTemplate>
<!--<Matrix:MatrixCellTemplate />-->
</DataGridTemplateColumn.CellTemplate>
Gracias H.B., +1 por la información obsoleta. Seguiré buscando saber en qué casos tiene sentido usar FrameworkElementFactory con DataGrid. – akjoshi
Uno de los propósitos es el rendimiento. Si tiene muchos controles con plantillas complejas, la creación de controles desde XAML es mucho más lenta que la creación desde el código. – TcKs
@TcKs: Muéstreme sus datos empíricos, ya que no lo creeré, estamos hablando de plantillas aquí, los controles no se instancian hasta que se necesiten de todos modos. Si define una plantilla en código o en XAML no debería importar en absoluto, ambos se compilan a menos que utilice XAML suelto, que es poco probable. –