0

我想用来FrameworkElementFactory创建一个网格模板,但是如何定义它RowDefinition的 s ?

作为代码

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>

4

1 回答 1

3

FrameworkElementFactory已被弃用:

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

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

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

var markup = XamlReader.Parse(template);
于 2013-07-04T02:57:42.073 回答