c# - 如何以编程方式访问 DataTemplate 的关联数据类型?

标签 c# wpf resources datatemplate

我有:

<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(对接管理器)

最佳答案

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);

关于c# - 如何以编程方式访问 DataTemplate 的关联数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27412932/

相关文章:

c# - 加密库?

c# - WPF ClickOnce : How are Digest values calculated

java - 为什么同一目录中的一个java类无法找到资源,而其他类却可以?

delphi - 如何制作 PNG 资源?

c# - 并行运行时任务变慢

c# - UWP c# 中的 mouseEnter 按钮样式

c# - 有没有办法告诉 resharper 忽略整个解决方案的特定方法名称?

c# - 组合框的默认文本

c# - 在 c# wpf 中,我可以将 listview 列动态构建为类方法吗?

javascript - 如何使用 Maven 资源插件复制单个文件