如何在WPF中创建一个Grid并使用FrameworkElementFactory设置RowDefinitation?

时间:2013-07-04 02:43:46

标签: c# wpf

我想使用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>

之下

1 个答案:

答案 0 :(得分:3)

FrameworkElementFactory已被弃用:

  

此类是以编程方式创建模板的弃用方式,   它们是FrameworkTemplate的子类,例如ControlTemplate或   DataTemplate中;并非所有模板功能都可用   您使用此类创建模板。推荐的方式   以编程方式创建模板是从字符串或a加载XAML   内存流使用XamlReader类的Load方法。

如果您需要以编程方式创建模板,建议的路线是使用XamlReader.LoadXamlReader.Parse

var template = 
    "<Grid>" +
        "<Grid.RowDefinitions>" +
            "<RowDefinition/>" +
            "<RowDefinition/>" +
        "</Grid.RowDefinitions>" +
    "</Grid>";

var markup = XamlReader.Parse(template);