我想使用FrameworkElementFactory
创建网格模板,但是如何定义其RowDefinition
?
作为代码
FrameworkElementFactory gridFactory = new FrameworkElementFactory(typeof(Grid));
FrameworkElementFactory RowDefinitionFactory1 = new FrameworkElementFactory(typeof(RowDefinition));
gridFactory.AppendChild(RowDefinitionFactory1);
FrameworkElementFactory RowDefinitionFactory2 = new FrameworkElementFactory(typeof(RowDefinition));
gridFactory.AppendChild(RowDefinitionFactory2);
它会抛出异常......
因为<RowDefinitation>
应位于<Grid.RowDefinitations>
答案 0 :(得分:3)
此类是以编程方式创建模板的弃用方式, 它们是FrameworkTemplate的子类,例如ControlTemplate或 DataTemplate中;并非所有模板功能都可用 您使用此类创建模板。推荐的方式 以编程方式创建模板是从字符串或a加载XAML 内存流使用XamlReader类的Load方法。
如果您需要以编程方式创建模板,建议的路线是使用XamlReader.Load
或XamlReader.Parse
。
var template =
"<Grid>" +
"<Grid.RowDefinitions>" +
"<RowDefinition/>" +
"<RowDefinition/>" +
"</Grid.RowDefinitions>" +
"</Grid>";
var markup = XamlReader.Parse(template);