如何以编程方式访问DataTemplate的关联dataType?

5

我有:

<DataTemplate DataType="{x:Type svgEdit:UserControlSvgEditModel}">
        <svgEdit:UserControlSvgEdit />
</DataTemplate>

我想以编程的方式获取类型: svgEdit:UserControlSvgEdit

我的操作:

        // Here the obj Type is the key to the resource, it works but
        var key = new System.Windows.DataTemplateKey(obj.GetType());
        var dataTemplate = (DataTemplate)DockSite.FindResource(key);
        // I don't know how to get the DataTemplate associated type ????
        var tc = dataTemplate.Template as TemplateContent;

但是我找不到如何检索相关的类型?

注意:我需要以编程方式实例化模板内容并将其传递给DockSite(停靠管理器)。


“关联类型”是什么意思?您想获得一个“Type”引用值吗?如果是这样,您要确定的具体类型是什么?如果不是,那么您要确定的是什么? - Peter Duniho
1个回答

5

DataTemplate.LoadContent()方法将返回DataTemplate内的根元素。通过它,我们可以获取模板内容的数据类型。修改后的代码如下所示:

        var key = new System.Windows.DataTemplateKey(typeof(ProductsViewModel));
        var dataTemplate = (DataTemplate)this.FindResource(key);

        var tc = dataTemplate.LoadContent().GetType();
        var instance = Activator.CreateInstance(tc);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接