在我正在工作的其中一个应用程序中,我找到了这段代码 -
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
答案 0 :(得分:8)
难以猜测这段代码背后的原因,可能是为了减少XAML,但你真的可以手动定义它,在功能上它并不重要(特别是因为那里没有任何动态可以证明在代码中做到这一点 - 在第一位落后。)
事实上,{@ 3}}已被弃用:
这个类是一种不常用的方式,以编程方式创建模板,模板是FrameworkTemplate的子类,如ControlTemplate或DataTemplate;使用此类创建模板时,并非所有模板功能都可用。以编程方式创建模板的推荐方法是使用XamlReader类的Load方法从字符串或内存流加载XAML。