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

Eri*_*let 5 c# wpf resources datatemplate

我有:

<DataTemplate DataType="{x:Type svgEdit:UserControlSvgEditModel}">
        <svgEdit:UserControlSvgEdit />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

我想以编程方式获取类型: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;
Run Code Online (Sandbox Code Playgroud)

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

注意:我需要以编程方式实例化模板内容并将其传递给DockSite(Docking Manager)

Jaw*_*har 5

DataTemplate.LoadContent() 方法将给出 DataTemplate.Using 中的根元素,我们可以获得模板内容的数据类型。修改后的代码将如下所示,

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

        var tc = dataTemplate.LoadContent().GetType();
        var instance = Activator.CreateInstance(tc);
Run Code Online (Sandbox Code Playgroud)