使用FrameworkElementFactory的目的

时间:2012-02-01 06:41:34

标签: wpf datatemplate wpfdatagrid celltemplate frameworkelementfactory

在我正在工作的其中一个应用程序中,我找到了这段代码 -

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的{​​{1}}(稍后添加到DataGridTemplateColumn集合),如下所示 -

DataGrid.Columns

我不确定使用此<DataGridTemplateColumn.CellTemplate> <Matrix:MatrixCellTemplate /> </DataGridTemplateColumn.CellTemplate> 有什么好处?如果我直接使用FrameworkElementFactory作为单元格模板,我会遇到什么问题 -

MatrixCellContainer

1 个答案:

答案 0 :(得分:8)

难以猜测这段代码背后的原因,可能是为了减少XAML,但你真的可以手动定义它,在功能上它并不重要(特别是因为那里没有任何动态可以证明在代码中做到这一点 - 在第一位落后。)

事实上,{@ 3}}已被弃用:

  

这个类是一种不常用的方式,以编程方式创建模板,模板是FrameworkTemplate的子类,如ControlTemplate或DataTemplate;使用此类创建模板时,并非所有模板功能都可用。以编程方式创建模板的推荐方法是使用XamlReader类的Load方法从字符串或内存流加载XAML。